应用程序崩溃在initWithStyle上

时间:2012-03-02 08:24:07

标签: objective-c ios uitableview

我无法理解我的应用崩溃的原因。这是代码:

-(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

3 个答案:

答案 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];