创建单元格时,无法识别的选择器发送到实例

时间:2013-12-08 11:14:27

标签: objective-c cocoa-touch uitableview unrecognized-selector

我正在尝试重复使用我的故事板中创建的单元格,

我正在使用此代码:

MyTableView * mytableview;

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
mytableview = [sb instantiateViewControllerWithIdentifier:@"myTable"];


AlertCell *cell;

cell = [mytableview.tableView dequeueReusableCellWithIdentifier:@"alertCell"];
cell.message.text = @"some text";

return cell;

我收到此错误:

[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0xe02b7d0

此行最终会生成错误:

[mytableview.tableView dequeueReusableCellWithIdentifier:@"alertCell"];
  • 使用单元格时的表格视图是以编程方式创建的。
  • 我想要的一切都有效!但我无论如何都得到了日志中的错误

非常感谢!

2 个答案:

答案 0 :(得分:1)

创建单元格时无法创建表格视图。

您必须在创建视图控制器时调用的方法中创建表视图,例如viewDidLoad

然后在单元格方法中使用方法中包含的tableView指针。

此外,该错误实际上也表明您的数据源存在问题。

有很多明显的知识差距,也许最好的方法是阅读Table View Programming Guide

答案 1 :(得分:0)

我在创建表时并不完全明白。你不应该同时实例化。为什么你需要打电话给这条线?

mytableview = [sb instantiateViewControllerWithIdentifier:@"myTable"];

如果您想使用tableview,只需正常创建并将其添加到viewcontroller,而不是使用viewDidLoad中的上一行代码。

UITableView *tableView = [[UITableView alloc]initWithFrame:tableFrame style:UITableViewStylePlain];
tableView.rowHeight = 45;
[self.view addSubview:tableView];
tableView.delegate = self;
tableView.datasource = self;

实现tableview的数据源和委托方法。在cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"newFriendCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"newFriendCell"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
//do your stuff
return cell;
}