由于空数组iOS obj C

时间:2015-11-11 09:20:43

标签: ios objective-c

我有一个名为MessageDisplay的ViewController,其中以编程方式创建表视图。在同一个ViewController中,有一个按钮,它指向另一个ViewController名称CreateMessage。当用户单击CreateMessage中导航栏中的后退按钮时,MessageDisplay屏幕将加载回来,当我滚动表格时它会崩溃。我在表格视图单元格中添加了uilabel,如cellForRowAtIndexPath函数内所示。

     UILabel *dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.view.frame.size.width-60, 8,50,20)];
[dateLabel setFont:[UIFont fontWithName:@"ProximaNovaSoft-Regular" size:13]];
dateLabel.textColor =[UIColor grayColor];
dateLabel.text = [dateArray objectAtIndex:indexPath.row];;
[cell addSubview:dateLabel];

由于dateArray为空,发生崩溃。数组的值存储在REST调用响应中。数组在' didReceiveResponse'中初始化。功能。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

您似乎只应在填充dateArray后加载数据。 您可以在数组为空时跳过组件,并在获得响应时重新加载表(这将刷新视图) - 此解决方案仅在您最初可以显示没有dateLabel的视图时。 另一种解决方案是在收到响应之前不加载任何数据。

答案 1 :(得分:0)

[YOURTABLEVIEW reloadData]didReceiveResponse中(更新dataArray之后)。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return dateArray.count; }

此外:不要在单元格上添加子视图,而是添加到cell.contentView。

答案 2 :(得分:0)

你可以通过检查你是否越界

来防止崩溃
    if ([dateArray count] > indexPath.row) {
        dateLabel.text = [dateArray objectAtIndex:indexPath.row];
    }

但我猜这个问题来自于该数组不是它应该是什么。 您可以将代码粘贴到指定dateArray值的位置吗?