因此,我试图将 tableView 组件连接到通过 .xib 用户界面创建的 UIViewController。我得到了经典-[UIView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x1f544cb0
,我猜我连接的东西不正确,或者正在做一些我不应该用界面构建器做的事情。我搜索了谷歌和堆栈溢出,发现了类似的问题,但没有对我的情况有所帮助的答案。我一直在努力解决这个问题,希望这里有人能提供帮助。当控制器是 UITableViewController 时,我只通过情节提要或使用 .xib 完成此操作。通常我只会使用 UITableViewController 但我可能需要在视图底部添加一个工具栏,以便该选项不可行。这是我创建课程所采取的步骤,如果我做错了什么,请告诉我
我首先使用 XIB 为用户界面创建文件:
然后我将表格视图组件添加到 XIB:
在 LeftMenuViewController.h 中,我添加以下代码行来告诉允许该类用作 UITableViewDelegate 和 UITableViewDataSource:
@interface LeftMenuViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
然后,我通过控制从组件拖动到 File's Owner 标题并选择委托和数据源,将表格视图组件连接到委托和数据源,如图所示:
然后,我将以下代码行添加到 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
错误。我究竟做错了什么?我尝试过或推荐过的一切都没有奏效。