2012-01-05 57 views
0

我有一個grouped table with 3 categories and one header above the first one。我希望在用戶輸入他/她的名字後,標題標題用自己的名字更新自己。我在解僱第一個響應者(鍵盤)後,將reloadData方法放在textFieldShouldReturn中。它似乎並沒有工作。標題標題保持不變。iOS更新標題標題

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if(section == 0) 
    { 
     if(title==nil) 
      return @"Your name here..."; 
     else 
      return title; 
    } 
    else return nil; 
} 

titleNSString它應該包含從標題單元格中的文本。

下面的代碼是從cellForRowAtIndexPath ....

UITextField *txt = [[ UITextField alloc ] initWithFrame:CGRectMake(100,10, 200, 30)];`` 
    txt.delegate = self; 
    [cell addSubview:txt]; 

    if(indexPath.section==0) 
    { 
     if([indexPath row] == 0) 
     { 
      [cell.textLabel setText:@"Name"]; 
      title = txt.text; 

     } 

謝謝!

+0

您可以修改您的原始問題以顯示「UITextField * txt = ...'初始化程序被調用的位置/方式嗎?現在我懷疑你總是不停地調用alloc/init方法,因此你的'title'變量總是被設置爲NULL。 – 2012-01-05 11:32:27

+0

'reloadData'只重新載入表格單元格或整個表格,包括頁眉和頁腳? – Teo 2012-01-05 11:37:23

回答

0

你沒有說清楚,因爲你沒有從你的cellForRowAtIndexPath方法發佈足夠的代碼,但是你很可能每次調用cellForRowAtIndexPath都會重新創建一個UITextField(這是很多)。這也意味着你像瘋了一樣泄漏內存(並且你的應用程序會被拒絕被列在應用程序商店中以啓動)。

若要解決此問題,請在xib文件中創建一個UITableView單元並將UITextField嵌入其中(將IBOutlets連接到兩者),然後在爲要顯示文本字段的索引路徑調用cellForRowAtIndexPath時返回UITableView單元。

或者,您可以編程方式創建一個UITableView單元格(不在xib中),初始化UITextField,就像您在那裏做的那樣並將它分配給您的類中的一個變量。

在任何情況下,你只是想的Alloc &初始化爲UITextField一次只有一次。如果你可以這樣做,你可以打電話title = txt.text;(你也應該把你的UITextField重命名爲更直觀的東西,比如nameLabel)。

Take a look at this related StackOverflow question瞭解如何在UITableViewCell中嵌入UITextField。

+0

好的,我理解你的建議,但仍然如何在應用程序運行時更改標題的標題?在我插入名稱後,我希望標題更改它的文本... – Teo 2012-01-05 11:59:20

+0

調用'reloadData'還應刷新標題([此相關問題似乎表明該事實](http://stackoverflow.com/questions/ 2805326/prevent-header-from-being-being-being-updated-after-calling-reloaddata))...所以只需在輸入名稱(可通過文本字段委託方法['textFieldDidEndEditing:']檢測到'reloadData' (http://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/occ/intfm/UITextFieldDelegate/textFieldDidEndEditing :)) – 2012-01-05 12:03:32