簡體   English   中英

如何在動態UITableView(iPhone)中處理對UITextFields的引用

[英]How to handle references to UITextFields in dynamic UITableView (iPhone)

我有一個UITableView ,它被分解為用戶定義的sections 在每個sections有2 rows 這兩rows中的每一rows包含一個用戶可以編輯的UITextField

我需要的是一種能夠在以后訪問這些UITextFields中的數據的方法。 我希望這會是一個簡單的問題,但它會給我帶來很大的悲傷。

到目前為止,我嘗試了兩種方法:

嘗試1

我創建了兩個NSMutableArrays ,其中我將UITextField對象添加到索引i(對應於它來自的section )。 然后我嘗試通過遍歷數組來訪問這些值。 這不起作用,因為UITextFields一直被擦干凈。 每次我向下滾動表格, UITextField都不在視野范圍內,當我回去時,它的內容已被擦干凈。

嘗試2

我試圖掌握UITableViewsections數量(這很好)。 然后我想通過每個迭代section中的UITableView ,在記錄值rows各。 這是我失去的地方,因為我不知道該怎么做或者甚至可能。

如果這是一個天真的問題,我很抱歉,但是我真的很掙扎,並且會感激任何建議。

請記住,文本字段在滾動時會被重用,因此您並不真正想要存儲對它們的引用。

您所做的是在輸入信息時捕獲信息。 最簡單的方法是在委托中實現textFieldDidEndEditing協議方法。

棘手的部分是弄清楚文本字段在哪一行。最好的方法是創建一個具有NSIndexPath屬性的UITableViewCell子類。 然后,您可以在使用tableview:willDisplayCell:forRowAtIndexPath:配置單元格時設置tableview:willDisplayCell:forRowAtIndexPath: .

然后,在textFieldDidEndEditing中,通過其superview訪問tableViewCell indexPath屬性。 即:

NSIndexPath indexPathOfParentCell = [(MyUITableViewCellSubclass *)self.superview indexPath]; 

這樣做可以讓您知道單元格的節和行。

像這樣在Table的cellForRow中創建TextField並給它一個標記

    UITextField * userField = [[[UITextField alloc] initWithFrame:CGRectMake(0, 12, self.view.frame.size.width -20, 20)] autorelease];
    userField.tag = 1001;
    userField.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14];
    userField.textAlignment = UITextAlignmentCenter;
    userField.delegate = self;
    userField.autocorrectionType = UITextAutocorrectionTypeNo;
    userField.autocapitalizationType = UITextAutocapitalizationTypeNone;
    userField.clearButtonMode = UITextFieldViewModeWhileEditing;

    if (indexPath.row == 0)
        [cell.contentView addSubview:userField];  

然后像這樣訪問TextField:

    UITextField *userField = (UITextField *)[[(UITableViewCell *)[(UITableView *)tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] contentView] viewWithTag:1001];

如果將文本字段的文本保留在數組中而不是文本字段本身,則“嘗試1”應該可以正常工作。 (任何試圖查看或控制數據對象的東西很有可能出錯。)

無論作為表視圖的數據源,如果內容單獨存儲,應該能夠根據節和行重新填充滾動的單元格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM