我正在尝试重复使用我的故事板中创建的单元格,
我正在使用此代码:
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"];
非常感谢!
答案 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;
}