UITableView在将数据设置为自定义标签时崩溃

时间:2014-03-17 07:21:17

标签: ios objective-c uitableview

我在表格视图单元格中使用自定义标签。当我尝试使用数组中的数据填充它时,会显示数据但是当我滚动表格视图时应用程序崩溃。

我在viewDidLoad中设置的数组

    tempArray=[NSArray arrayWithObjects:@"Alert 1",@"Alert 2",@"Alert 3",@"Alert 4",@"Alert 5",@"Alert 6",@"Alert 7",@"Alert 8",@"Alert 9",@"Alert 10",nil];

表格视图方法

 else if (tableView.tag==2) {

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

         contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(45, 2, 170, 24)];
        contentLabel.numberOfLines =0;
         contentLabel.font = [UIFont fontWithName:@"Arial" size:11];
        contentLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.6];
        [cell.contentView addSubview:contentLabel];


    }
    contentLabel.text = [tempArray objectAtIndex:indexPath.row];//crashes here 
     return cell;
}

崩溃日志

        *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 10 beyond bounds [0 .. 9]'

3 个答案:

答案 0 :(得分:0)

可能的原因:

  1. tempArray不包含索引等于indexPath.row的元素

  2. tempArray包含具有此类索引的元素,但它不是NSString对象。

答案 1 :(得分:0)

根据崩溃日志,您要求数组中的第10个对象,而数组只有0到9的对象。

因此请确保numberOfRowsInSection返回10.

答案 2 :(得分:0)

请保留tempArray数组,arrayWithObjects是autorelease,然后检查tableview的其他委托,例如numberOfRowsInSection等。