只需将UITableViewController添加到情节提要
并将其类设置为名为CategoriesList的文件:-
@interface CategoriesList : UITableViewController {
NSArray *CategoryArray;
}
@end
但是我不断得到
***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[CategoriesList setDelegate:]:无法识别的选择器已发送到实例0x7f9bfbd29370'
答案 0 :(得分:0)
使用UITableViewController
时,您无需指定delegate
或dataSource
,因为这已在内部完成。换句话说,UITableViewController
基本上由一个普通的UIViewController
和一个UITableView
组成,其中delegate
和dataSource
已经设置为父控制器。苹果的文档中对此进行了说明:
UITableViewController的子类,当您的界面包含表视图且几乎没有其他内容时。 表视图控制器已经采用了管理表视图内容并响应更改所需的协议。
因此,只需删除指向delegate
和dataSource
的那些引用出口,就可以了。
答案 1 :(得分:0)
找到解决方案
问题是:
在UIViewController的prepareForSegue方法中,该方法具有UITableViewController的按钮,我正在将其他视图控制器的委托设置为self,而无需指定segue名称
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
AddMapAddress *MapAddress = [segue destinationViewController];
MapAddress.delegate = self;
MapAddress.AnnotationTitle = Name_Txt.text;
}
解决方案:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"MapSegue"]) {
AddMapAddress *MapAddress = [segue destinationViewController];
MapAddress.delegate = self;
MapAddress.AnnotationTitle = Name_Txt.text;
}
}