2012-01-27 31 views
0

我有我創建一個指向我的視圖控制器和init的水箱內cellForRowAtIndexPath故障設置屬性和的cellForRowAtIndexPath之外對tableviewcell執行操作:

if ([[cellOrder objectAtIndex:indexPath.section] isEqualToString:@"balanceCell"]) { 

    balanceCell = (BalanceCell *) [tableView dequeueReusableCellWithIdentifier:@"balanceCell"]; 

    if (balanceCell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"BalanceCell" owner:self options:nil]; 
     balanceCell = (BalanceCell*) [nib objectAtIndex:0]; 
    } 

    return balanceCell; 
} 

定製tableviewcell我只有一個實例所以我假設如果我想設置單元格的任何屬性,我只能參考balanceCell

但是,這是行不通的。當用戶按下一個按鈕時,調用下面的方法(我確認它實際上正在調用)。但是,稱爲平衡單元的方法不起作用。

- (void)addBalanceCell { 

[cellOrder addObject:@"balanceCell"]; 
[table reloadData]; 

balanceCell.leftEquation = equationCell.leftView.equationOrder; 
balanceCell.rightEquation = equationCell.rightView.equationOrder; 

[balanceCell setUpText]; // not called 

} 

什麼是引用balanceCell的正確方法?

+0

你能告訴我你在哪裏調用了這個方法 - (void)addBalanceCell ..? – vishy 2012-01-27 07:34:50

+0

單獨的自定義表格視圖單元格有一個按鈕,並且我在cellForRowAtIndex中使用@selector將該方法添加到了按鈕中 – Mahir 2012-01-27 08:04:53

+0

當表格重新加載停止/註釋時,可以使用它的調用... 可以通過評論[表重載數據]行..? – vishy 2012-01-27 08:16:33

回答

0

那麼這不是接口生成器的方式,但你應該有一個數組作爲你的數據源。 該數據源應該包含定義BalanceCell的對象。 如果您無法管理這些對象並重新加載表,那麼您可能需要考慮更改它。

UITableViewCell應主要用作視圖,這是一種顯示數據模型的方法,它存儲在其他地方,也就是您的數據源。

在你做「addBalanceCell」的時候,你應該創建一個新的dataObject實例並在這裏管理你的數據。在用你想要的數據進行管理之後,你可以直接添加數據源並更新表,這意味着你之後創建了一個新的單元,因爲數據源中有一個新的條目。

與通過訪問數據源中的這些數據對象來更新這些單元格的方式相同。您可以在數據源中請求該對象並按照您希望的方式進行管理。如果你更新表格,單元格應該用新數據更新自己。

總之,你的手機應該主要是用來顯示數據的手段,而不是數據本身。