所以我试图将tableView组件连接到通过.xib用户界面创建的UIViewController。我得到了经典的-[UIView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x1f544cb0
,并且我猜测我已经错误地连接了某些内容,或者正在做一些我不应该使用界面构建器做的事情。我搜索了谷歌和堆栈溢出,并找到了类似的问题,但没有答案,这有助于我的情况。我一直试图弄明白这一点,并希望这里有人可以提供帮助。当控制器是UITableViewController时,我只通过storyboard或.xib完成了这个。通常我会使用UITableViewController,但我可能需要在视图底部添加一个工具栏,以便该选项不可行。以下是我创建课程的步骤,如果我做错了,请告诉我
我首先使用XIB为用户界面创建文件:
然后我将表视图组件添加到XIB:
在LeftMenuViewController.h中,我添加了以下代码行,以告知允许将该类用作UITableViewDelegate和UITableViewDataSource:
@interface LeftMenuViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
然后我将以下代码行添加到LeftMenuViewController.m,以提供所需TableView委托方法的定义:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 48;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
return cell;
}
此过程导致应用程序抛出NSInvalidArgumentException,从而产生[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector
错误。我究竟做错了什么?我尝试或推荐过的所有东西都没有用。
答案 0 :(得分:2)
错误在您的错误消息UIViewController
中引用[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector
,这意味着文件所有者尚未设置(它应该引用您的视图控制器子类,而不是{{1 },本身)。您已在NIB中正确指定了委托和数据源,因此我想知道您是如何实例化视图控制器的。
您应该使用以下内容对其进行实例化:
UIViewController
或者,如果NIB名称与控制器名称不匹配:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:controller animated:YES completion:nil];
答案 1 :(得分:1)
在占位符部分的NIB文件中单击文件所有者,并确保将自定义类设置为LeftMenuViewController
或您为其命名的任何内容。
答案 2 :(得分:0)
在viewDidLoad中:
self.tableView.delegate = self;