我正在尝试使用uitableview
初始化xib
但是当我在模拟器中运行应用时,会抛出以下异常。
2013-06-16 10:40:48.552 CoreDataExample[60661:c07] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x81765a0
2013-06-16 10:40:48.554 CoreDataExample[60661:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x81765a0'
在我尝试启动tableview之后的步骤下面:
UITableViewDelegate
中添加 UITableViewDataSource
和 viewController
。tableview
插入 viewController.xib
的视图中。datasource
和 delegate
(按下控制键并将鼠标的箭头从组件拖放到文件的所有者并选择选项委托,例如)。- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中实施方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
和 viewController.m
。以下两种方法的实现:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;
static NSString *identifier = @"identifier";
cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
}
cell.textLabel.text = @"Olá";
cell.detailTextLabel.text = @"Subtitle" ;
[cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];
return cell;
}
下面的ViewController.h:
@interface CDEMainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
@end
答案 0 :(得分:22)
在XIB中,单击文件所有者,检查类类型。我想这是UIViewController。
如果是UIViewController
,请将其更改为CDEMainViewController
。它会正常工作。
答案 1 :(得分:0)
你有设置方法吗?:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
答案 2 :(得分:0)
尝试打开xib文件并重新连接tableView的IBOutlet。希望对你有帮助。