2011-03-30 92 views
12

我使用viewDidLoad中的數組初始化表中的數據,然後將數據添加到單元中。這是我讀書的一種標準方式。 這是我有:如何更新tableView中的數據?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //Create array and add data ("tableViewValues" is initialized in .h file) 
    tableViewValues = [[NSMutableArray alloc]init]; 
    [tableViewValues addObject:@"$280,000.00"]; 
    [tableViewValues addObject:@"$279,318.79"]; 
} 

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *cellValue = [tableViewValues objectAtIndex:indexPath.row]; 

    cell.textLabel.text = cellValue; 

    return cell; 
} 

所以,當視圖加載,這兩個貨幣價值都在我的表。 現在在另一個函數中,我使用不同的貨幣編號填充另一個數組,具體取決於用戶在文本字段中輸入的內容。我將如何更新我當前的表視圖,並用我的另一個數組中的值替換這些值?誰能幫我?謝謝!

回答

37

您可以撥打

[self.tableView reloadData]; 

重新加載的所有數據,但是,你需要一種方法來有你想要填充表的陣列進行編程。也許你想讓你的-cellForRowAtIndexPath調用一個私有方法來有條件地選擇正確的數組。

+0

我得到了重新加載數據的工作,謝謝。但我在填充數組中的值時遇到問題?你能詳細說明怎麼做嗎? – serge2487 2011-03-30 06:08:46

+0

這取決於。獲得新值後,是否需要返回初始值?什麼是你的表更新值。很難說沒有更多的信息。 – Jamie 2011-03-30 06:29:52

+0

我有一個textfield委託「shouldChangeCharactersInRange」,我用該方法中的數字填充數組。所以陣列不斷變化。我不在乎舊的價值觀。每次調用方法時,我只想獲取數組值並將其放入表中。 – serge2487 2011-03-30 07:05:42

1

你需要(釋放)再現同一tableViewValues數組,然後調用reloadData方法上的tableView這樣的:

[self.tableView reloadData]; 

如果你表視圖控制器和self.tableView指向這將工作有問題的桌子。

2

你必須從你的數組中刪除所有的值,那麼你必須調用表重裝數據

// In the method where you will get new values 
[tableViewValues removeAllObjects]; 
[tableViewValues add:@"new values"]; 
//reload table view with new values 
[self.tableView reloadData]; 
+0

同樣的問題。這增加了什麼新東西?因爲它基本上與已被接受的答案相同。 – 2013-05-17 06:37:42

1
在功能

,到新數組分配值後,所有你需要做的就是

[tableViewValues removeAllObjects]; 
tableViewValues = [[NSMutableArray alloc] arrayByAddingObjectsFromArray:newArray]; 
[self.tableView reloadData]; 
+0

謝謝,這就是我所追求的! – Jordan 2015-03-10 05:48:53

2

我已經有過這個問題多次,我總是犯同樣的錯誤。

[self._tableview reloadData]作品!

問題是填充表格的地方。

我這麼做是 - (無效)viewDidLoad中和表是更新相同的數據。顯然沒有任何反應。

在之前調用[self._tableview reloadData]的同一位置更新表視圖(plist,dictionary,array,whatever)的內容。

這是關鍵!

做一個測試:

#pragma mark - Actions 

- (IBAction)refreshParams:(id)sender { 

    self.dictionary = nil; 

    [self._tableView reloadData]; 
} 

你可以看到,當你按下刷新按鈕是如何消失的tableview內容。顯然,這是一個例子。我使用字典來填充表格和一個按鈕來刷新內容。

0
[self.tableView reloadData]; 

會幫助你這個。

相關問題