2009-08-31 43 views

Trả lời

3

sử dụng [tableView reloadData] phương pháp trên xem bảng ui

+0

Chỉ cần cẩn thận làm việc đó trong khi ở chế độ Edit. – Amagrammer

0

ok .. nhưng .. chúng ta cần những giải pháp cho việc này .. nếu chúng ta thêm các tế bào trong thời gian chạy, tôi đã nhận được đầu ra với các tế bào tương tự trong tế bào đầu tiên và cuối cùng của UITableView ..

bạn có thể xóa các tế bào trước khi thêm bất kỳ subviews

Ví dụ:

[mytableview.contentView clearsContextBeforeDrawing]; 
24

Xoá dữ liệu của bạn trước khi gọi r eloadData, và bây giờ người dùng sẽ thấy bảng bị xóa và được điền lại với dữ liệu mới.

myArray = nil; 
[myTableView reloadData]; 
0

Bạn có thể xem giá trị của ô được sử dụng lại và nếu ô không sử dụng lại - sau đó tạo lại.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
MyLog(@"Start Table: cellForRowAtIndexPath: %d", indexPath.row); 

NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row]; 
UILabel *lblNew; 
lblNew = [UILabel new]; 
UILabel *lblCell; 
lblCell = [UILabel new]; 

MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

if (cell == nil) 
{ 
    cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
    [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];  
} 
else 
{ 
    lblNew = [lblNameArray objectAtIndex:indexPath.row]; 
    for (id label in [cell.contentView subviews]) 
    { 
     if ([label isKindOfClass:[UILabel class]]) 
     { 
      lblCell = label; 
     } 
    } 
    if (![lblNew.text isEqualToString:lblCell.text]) 
    { 
     cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
     [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]]; 
    } 
} 
return cell; 
2

Đây là điều tôi muốn làm. đặt ô = nil;

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 
-1

Tôi có các mục nhập đôi khi chọn sau khi cuộn. Bây giờ màn hình hiển thị là sạch sẽ như mong đợi! sử dụng các workaround

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 

và cũng (btw:. ClearsContextBeforeDrawing như độc nó đã không làm việc

[cell.contentView clearsContextBeforeDrawing]; 

trong Simulator tôi có ấn tượng về phản ứng chính xác hơn về lựa chọn tế bào Cảm ơn bạn

!
1

Nhân tiện, clearsContextBeforeDrawing là tài sản và

[cell.contentView clearsContextBeforeDrawing]; 

không có gì ngoại trừ việc trả lại giá trị của nó.

0

Swift: Không chắc đó là cách tốt nhất hay không, Nhưng tôi đang sử dụng mã này để xóa và roload dữ liệu:

fileprivate func clearTable() { 
    self.tableviewData.removeAll(keepingCapacity: false) 
    self.tableView.reloadData() 
} 
Các vấn đề liên quan