iOS - tableView reloadData非常奇怪的问题

时间:2012-06-24 11:05:51

标签: ios xcode tableview reloaddata

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    }



        [cell setBackgroundColor:[UIColor lightGrayColor]];
        cell.textLabel.textColor = [UIColor lightTextColor];
        cell.textLabel.backgroundColor = nil;
        cell.detailTextLabel.textColor = [UIColor darkGrayColor];
        cell.detailTextLabel.backgroundColor = nil; 

  // Get list of local notifications
        NSArray *notificationArray = [[UIApplication sharedApplication] scheduledLocalNotifications];
        UILocalNotification *notif = [notificationArray objectAtIndex:indexPath.row];

        // Display notification info
        [cell.textLabel setText:notif.alertBody];

        NSDateFormatter *format = [[NSDateFormatter alloc] init];
        [format setDateFormat:@"MMM dd 'at' HH:mm"];

        NSString *dateString = [format stringFromDate:notif.fireDate];

        NSString *textData = [[NSString alloc]initWithFormat:@"%@",dateString];

        [cell.detailTextLabel setText:textData];

        //[notif.fireDate description]



        [self.tableView reloadData];
        return cell;

    }

如果我不写“[self.tableView reloadData];”,那么一切都绝对正常,但如果我这样做,似乎单元格在那里但它没有被显示(单元格分隔符根据tableview的单元格数量消失有)

我需要重新加载数据,这样用户就不需要离开视图并再次加载视图来显示更新的信息。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您不需要在[self.tableView reloadData];内添加cellForRowAtIndexPath,这是绝对错误的,因为调用reloadData会再次调用cellForRowAtIndexPath,因为您经历过会产生非常奇怪的问题< / p>

一般情况下,只要您想要更改[self.tableView reloadData];

的全部或部分内容,通常会拨打UITableView

答案 1 :(得分:1)

创建一个函数来检查新数据是否可用(可能实现刷新按钮/拉动刷新)。如果有新数据,请致电[self.tableView reloadData];