2011-04-06 72 views
1

我正在使用tabbar應用程序。也許這是一個微不足道的問題,但我只是簡單地想要替換UITableViewCell的labelvalue。我從TextView獲取NSString,嵌入在UITableView「輸入」中。我想要修改的單元在「輸入」視圖的父視圖內。 修改應該在保存功能中進行。
訪問導航堆棧內不同UITableView的特定UITableViewCell

 
- (void)save:(id)sender 
{ 
    //Get the needed string 
    DescriptionViewCell *cell = (DescriptionViewCell *) [descriptionTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
    NSString *temp = [[NSString alloc]initWithString:[cell.textView text]]; 

    //Access parentview 
    FindTableViewController *rootController = [self.navigationController.viewControllers objectAtIndex:1]; 
    UITableViewCell *descriptionCell = [rootController.findUITable cellForRowAtIndexPath: [NSIndexPath indexPathForRow:0 inSection: 1]]; 

    //replace label string 
    descriptionCell.textLabel.text = temp; 
    [temp release]; 

    //return to parentview 
    [self.navigationController popViewControllerAnimated:YES]; 
} 


不幸的是,descriptionCell不包含任何數據,修改不會發生。你看到我的代碼中有任何問題,或者我應該與索引「玩」嗎?
在此先感謝。
乾杯,
西蒙

+0

您是否嘗試添加NSLog語句並打印出temp值? – Sabobin 2011-04-06 13:37:48

回答

0

其實我覺得你在descriptionCell卻一無所獲,因爲該小區是不是在那個時候可見。如果單元格不可見,cellForRowAtIndexPath返回nil。看看文檔 -

的cellForRowAtIndexPath:

Returns the table cell at the specified index path. 
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath 
Parameters 

indexPath 

    The index path locating the row in the receiver. 

Return Value 

    An object representing a cell of the table or nil if the cell is not visible or indexPath is out of range. 

You can do this by managing text in some data structure and when you go back to previous view you call reloadData and check for that value in cellForRowAtIndexPath. 
+0

Thx,做到了。但是數據必須在viewWillAppear方法中重新加載。 – 2011-04-06 15:31:29

+0

是的,你必須調用reloadData來查看錶視圖纔會出現。 – saadnib 2011-04-06 16:10:30

0

你所能做的就是在你的根表視圖控制器添加NSString財產將被用來存儲更新文本的價值。然後在您的save方法中,使用新文本更新根視圖控制器NSString屬性的值。最後,你打電話給你的根視圖controlles tableviews reloadData方法,像這樣:

FindTableViewController *rootController = [self.navigationController.viewControllers objectAtIndex:1]; 
[rootController.tableView reloadData]; 

在要impliment你的表視圖- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath方法根表視圖,使其applys NSString的屬性值到相應的單元格時,你請致電reloadData

if(indexPath.row == myCellIndex){ 
    cell.textLabel.text = myStringProperty; 
}