我正在设计一个简单的Grocery List应用程序,但无法将Food实体添加到List实体。
事件顺序:ListDetailTVC - > AddFoodToListTVC - >输入食物名称 - >保存
此时我想在列表中看到这种食物,但没有任何反应。屏幕保持不变。在深入研究之后,我发现AddFoodToListTVC中的委托是nil,因此在按下“save”后没有屏幕返回。
然后我尝试使用以下代码手动设置委托:
`if(delegate == nil)
{
self.delegate = (ListDetailTVC *)[[UIApplication sharedApplication] delegate];
}
NSLog(@"delegate = %@", delegate);
`
这将AddFoodToListTVC委托设置为某些东西,但我不确定如何验证我正确设置它。当我使用上面的添加运行我的应用程序时,单击保存时出现此错误。
“因未捕获的异常而终止应用程序'NSInvalidArgumentException',原因:' - [AppDelegate theSaveButtonOnTheAddFoodToListTVCWasTapped:]:无法识别的选择器发送到实例0x6b56610'”
0x6b56610在这种情况下是我手动设置的代理的地址。
我知道这些信息不多,但我可以提供任何相关代码。我的智慧结束了,如何正确设置AddFoodToListTVC的委托?
答案 0 :(得分:0)
看起来你的app委托没有实现这个方法:theSaveButtonOnTheAddFoodToListTVCWasTapped:
答案 1 :(得分:0)
代表类似于委托对象 事件触发器 ......就像 rowWasSelected 是需要处理的事件某人是强制性方法....
现在你要设置 AppDelegate 作为代表的接收者对象 [self.delegate =(ListDetailTVC *)[[UIApplication sharedApplication] delegate];] .. 。
但是由于AppDelegate没有处理这些事件,你会得到一个例外 [无法识别的选择器] ......
首先是声明协议即, UITableViewDelegate , UITableViewDataSource ... [协议就像只有声明没有实现的接口,你需要提供实现] Set tableViews DataSource 和委派并实施这些协议。将解决您的问题