2010-08-13 60 views
0

嗨,大家好,我對編輯表格單元格的值和將編輯的值返回到原始單元格有疑問。從視圖中傳回值

我有一個UITableView,其中包含5個部分各1行。內的cellForRowAtIndexPath我有以下幾點:

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *fieldTitle; 
    switch (indexPath.section) 
    { 
     case 0: 
      fieldTitle = @"First Name"; 
      break; 
     case 1: 
      fieldTitle = @"Last Name"; 
      break; 
     case 2: 
      fieldTitle = @"Company"; 
      break; 
     case 3: 
      fieldTitle = @"Email Address"; 
      break; 
     case 4: 

       fieldTitle = @"Password"; 
       break; 
    } 

cell.textLabel.text = fieldTitle; 

當單擊某一行如下,didSelectRowAtIndexPath方法燒製:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    AddField *addField = [[AddField alloc] initWithStyle:UITableViewStyleGrouped]; 

    addField.field = cell.textLabel.text; 
    addField.title = cell.textLabel.text; 
    addField.value = cell.detailTextLabel.text; 

    [self.navigationController pushViewController:addField animated:YES]; 

} 

這就建立了一個包含一個部分,一個排的另一個UITableView的。此表利用我編寫的包含用戶可編輯的文本字段的自定義單元格。有一個完成按鈕,用戶可以點擊返回到前一個視圖。

我的問題是:我如何獲得用戶在AddField視圖中輸入的值,以顯示在前一視圖中選定表格單元格的detailText標籤中?此功能與在iPhone的本機日曆應用程序中添加新事件的標題非常相似。

感謝您提供任何幫助,如果您需要更多信息,請告知我們。

回答

0

您是否嘗試過在原始tableView上調用reloadData?當然,你需要chnage你的代碼,以便fieldTitle從NSString數組中獲取它的值......並將tableview數據源設置爲該數組....

0

你會爲此使用委託。聲明一個協議,這是你的代表如下(從內存中,以便道歉,如果它不編譯):

@protocol CellDelegate 

@required 

- (void) fieldValueChanged:(AddField *)field; 

@end 

添加一個「id委託」給您的自定義單元格級,並添加一個屬性(非原子,分配)併合成它。

然後,當你設置在didSelectRowAtIndexPath方法你的,你做到以下幾點:

[cell setDelegate:self]; 

現在,在您的視圖控制器,你只需執行該協議(CellDelegate),實施方法fieldValueChanged ....這將調用由細胞。

現在在單元格中當值更改時只需調用[delegate fieldValueChanged:addfield];

注意:真的,您應該在您編寫的自定義單元類中設置AddField ...