2012-01-11 47 views
0

我有一個表格視圖,其中我可以添加1或減去1到我的cell.textLabel.text的值,但是當我切換視圖並返回或滾動單元格視圖,當它回到視圖中時,textLabel的值返回到1這是最初的起點!請幫忙!這裏是加1和減1的代碼:當單元格滾動出視圖時,TableViewCell的textLabel值返回到1

- (IBAction)addLabelText:(id)sender{ 

    cell = (UITableViewCell*)[sender superview]; // <-- ADD THIS LINE 

     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text 
                   intValue] +1]; 

} 


- (IBAction)subtractLabelText:(id)sender 
{ 
    cell = (UITableViewCell *)[sender superview];   
    if ([[cell.textLabel text] intValue] == 0){ 
     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] +0]; 
    } 
    else{ 
     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] -1]; 
    } 
} 

回答

1

好像你正在分配每一次新的細胞..和不使用小區重usablility方法。 在你的情況下,當你對前一個值執行算術操作時,你沒有一個數組來存儲以前的值。解決這個問題的最簡單方法是使您的Cell-Identifier獨一無二。 (類似於@「Cell-%d」,indexPAth.row)

注意:但是,更有效的方法是將結果保存到要填充數據的數組中,而無需使Cell-Identifier具有唯一性。

+0

好的,我接受了你的建議,並加入了這個:' - (IBAction)addLabelText:(id)sender {0} { num = [NSString stringWithFormat:@「%d」,[cell.textLabel.text intValue] +1]; [number addObject:num]; [myTableView reloadData]; }' 可以工作嗎?它增加了罰款,但我不能得到它減去工作!感謝您的幫助+1 – iProRage 2012-01-12 00:30:22

+0

不!您的初始代碼(即您問題中的代碼)可以工作。 假設我們已經使Cell標識符唯一,只需在兩個方法的末尾添加[myTableView reloadData]即可。 它應該工作。祝你好運。 – nomann 2012-01-12 12:53:52

+0

alirght會做,再次感謝! :d – iProRage 2012-01-12 23:45:00

2

發生這種情況的原因是,單元格將在滾動時重新使用。表視圖的數據源方法將被調用,因此值被重置爲原始值。你可以維護一個數組NSNumbers作爲tableview的一個數據源(在cellForRowAtIndexpath中:設置數組中的單元格標籤的文本)。每次需要添加或減少時,都要執行相應的NSNumberobj並重新加載tableview。

+0

好吧我想我明白你在說什麼。我想我對我的tableView圖像也一樣。我在我的'cellForRow'方法中有這樣的代碼:'cell.imageView.image = [imageArray objectAtIndex:indexPath.row];'這是你在說什麼?我只需要將其更改爲NSNumber?感謝一幫幫忙! – iProRage 2012-01-11 23:26:58

1

您未更新數據模式。這就是爲什麼它採取原始內容價值。

+0

首先,感謝您的幫助,其次我不太確定一個模式是什麼,那麼您能解釋一下嗎?再次謝謝 – iProRage 2012-01-12 03:09:24

0

更改後的單元格文本值重裝tableview中[self.tableview reloadData]

相關問題