gpt4 book ai didi

ios - 访问嵌入在单元格中的文本字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:19 24 4
gpt4 key购买 nike

我创建了一个表,该表动态创建自定义包含文本字段的单元格。当我运行该程序时,我可以在文本字段中输入文本。但是,在退出程序/切换到不同的 viewController 之前,我无法收集输入到其中的文本。您能否建议我应该如何提取用户输入的文本。

我知道我可以使用以下代码访问单元格...

for (int section = 1; section < [self.tableView numberOfSections]; section++) // section 0: profile picture
{
for(int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++)
{
NSLog(@"section = %d, row = %d", section, row);
NSIndexPath *tempIndexPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell *tempCell = [self tableView:self.tableView cellForRowAtIndexPath:tempIndexPath];
// NSLog(@"tempCell = %@", tempCell);

}
}

但我无法提取其中包含的文本。

我还提到:Accessing UITextField in a custom UITableViewCell .但我正在寻找更清洁的解决方案。

谢谢!

最佳答案

您引用的链接与您需要做的非常接近,但是有更好的方法来获取 indexPath。

开始使用 iOS 编程时,一个常见的误解是您需要在需要数据时(例如当用户点击“提交”时)获取文本字段的所有值。问题是文本字段并不总是可用,尤其是当它们位于表格中时。如果单元格不在屏幕上,则它很可能不存在,或者它已在表格的不同行中重复使用。文本字段是 View ,应该显示数据,而不是作为您存储数据的模型。

因此,您需要做的第一件事就是让您的 View Controller 符合 UITextFieldDelegate协议(protocol)并在将文本字段创建到 View Controller 时设置文本字段的委托(delegate):

您的 .h 文件(<UITextFieldDelegate> 是重要部分):

@interface YourViewController : UIViewController <UITextFieldDelegate>

当您创建文本字段时:

myNewTextfield.delegate = self;

这会告诉文本字段通知您对其进行的重要更改。现在,您只需要创建文本字段委托(delegate)方法,一旦他们完成编辑文本字段就会调用该方法,并等待它被调用以便您可以存储文本:

- (void) textFieldDidEndEditing:(UITextField *)textField {
// If you need the index path of the table view cell which contains the text field in order to know how to store it, use:
CGRect position = [self convertRect:textField.frame toView:self.tableView];
NSArray *indexPaths = [self.tableView indexPathsForRowsInRect:position];
NSIndexPath *indexPath = [indexPaths objectAtIndex:0];

// Save the contents of the text field somewhere so that you have it later when you need it:
something = textField.text;
}

关于ios - 访问嵌入在单元格中的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com