我无法理解我的应用崩溃的原因。这是代码:
-(void)viewDidLoad
{
[super viewDidLoad];
self.tableContent = [NSArray arrayWithObjects:@"Blue", @"Yellow", @"Green", nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.tableContent count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
return [self.tableContent objectAtIndex:indexPath.row];
}
这是我得到的错误
-[NSCFString setTableViewStyle:]: unrecognized selector sent to instance 0x4938
答案 0 :(得分:5)
以下是cellForRowAtIndexPath
中的错误:
return [self.tableContent objectAtIndex:indexPath.row];
tableContent
是一个NSString
的数组,因此您返回NSString
而不是UITableViewCell
类型的对象。所以改为写:
return cell;
您返回的NSString
代替导致错误的UITableViewCell
...如果您想查看要发送的文字,则需要设置textlabel的文字:
cell.textlabel.text = [self.tableContent objectAtIndex:indexPath.row];
//set the text and then return the cell
return cell;
答案 1 :(得分:2)
首先,您没有分配self.tableContent,这可能会导致内存访问错误。如果您打算在课堂上使用self.tableContent,您应该这样做:
self.tableContent = [[NSArray alloc] initWithObjects:@"Blue", @"Yellow", @"Green", nil];
另一方面,你在这里返回一个NSString而不是一个单元格:
return [self.tableContent objectAtIndex:indexPath.row];
你应该这样做:
return cell;
答案 2 :(得分:1)
你必须在最后使用
[return cell];