0

我正在设计一个简单的 Grocery List 应用程序,但无法将 Food 实体添加到 List 实体。

事件顺序:ListDetailTVC -> AddFoodToListTVC -> 输入食物名称 -> 保存

此时我想在列表中看到这种食物,但没有任何反应。屏幕保持不变。经过一番深入研究后,我意识到 AddFoodToListTVC 中的代表为零,因此在按下“保存”后没有可以返回的屏幕。

然后我尝试使用以下代码手动设置委托:

`if(delegate == nil)

   {
        self.delegate = (ListDetailTVC *)[[UIApplication sharedApplication] delegate];
    }


NSLog(@"delegate = %@", delegate);
`

这会将 AddFoodToListTVC 委托设置为某些东西,但我不确定如何验证我是否正确设置它。当我使用上述添加运行我的应用程序时,单击保存时出现此错误。

“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[AppDelegate theSaveButtonOnTheAddFoodToListTVCWasTapped:]:无法识别的选择器发送到实例 0x6b56610'”

在这种情况下,0x6b56610 是我手动设置的代理的地址。

我知道这不是很多信息,但我可以提供任何相关代码。我不知所措,如何正确设置 AddFoodToListTVC 的代表?

4

2 回答 2

0

看起来您的应用程序委托没有实现此方法:theSaveButtonOnTheAddFoodToListTVCWasTapped:

于 2012-08-21T04:09:49.617 回答
0

委托类似于由委托对象接收的事件触发器......就像rowWasSelected是一个需要由某人处理强制方法的事件......

现在的事情是你将AppDelegate设置为代表的接收者对象[self.delegate = (ListDetailTVC *)[[UIApplication sharedApplication] delegate];] ...

但由于 AppDelegate 不处理这些事件,你会得到一个异常[无法识别的选择器] ...

所以第一件事是声明协议,即UITableViewDelegateUITableViewDataSource ... [协议就像只有声明没有实现的接口,你需要提供实现] 设置 tableViews数据源委托并实现这些协议。会解决你的问题

于 2012-08-21T06:23:16.613 回答