从 UITableView 获取 UITextField 文本

Posted

技术标签:

【中文标题】从 UITableView 获取 UITextField 文本【英文标题】:get UITextField text from UITableView 【发布时间】:2011-08-17 09:40:35 【问题描述】:

我创建了一个自定义 UITableViewCell,它有一个 UIlabel 和一个 UITextField。

在我的 firstViewController 中,我加载并显示自定义表格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    static NSString *CellIdentifier = @"Cell";

    LoginTableCell *cell = (LoginTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) 
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"LoginTableCell" owner:nil options:nil];

        for (id currentObject in topLevelObjects) 
            if ([currentObject isKindOfClass:[UITableViewCell class]]) 
                cell = (LoginTableCell *) currentObject;
                break;
            
               
    

然后,当用户点击“登录”时,我想从那里获取 UITextField.text 值并将其存储到字符串中。

- (IBAction)login:(id)sender 

我知道这听起来可能很简单,但我一直坚持这一点,似乎找不到要解决的正确答案。

我想我可以这样做:

NSString *user = LoginTableCell.loginTextField.text;

但这会返回以下错误:

request for member 'text' in something not a structure or union

非常感谢任何帮助

谢谢

山姆

【问题讨论】:

使用对象名称而不是 LoginTableCell.loginTextField.text。例如。 currentObject.loginTextField.text 【参考方案1】:

通常你可以这样做。确保以下代码中的 indexPath 是具有所需 textField 的行的正确 indexPath。

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
LoginTableCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *user = cell.loginTextField.text;

【讨论】:

【参考方案2】:

在 tableview didSelectRowAtIndexPath 委托中,您必须为文本字段中的内容声明一个变量,并且您必须通过设置 @property @synthesis 在任何您想要的地方声明它并将此字符串用作全局变量。然后您可以使用它字符串和你想显示的任何地方,通过设置你的 textfield.text = your-string;

【讨论】:

好的,但是如果 UITextField 中已经有一些文本并且用户在点击登录按钮之前没有选择该单元格怎么办? 您的答案看起来好像依赖于用户选择每个单元格才能存储字符串。这可能会导致问题,我想存储来自 uitextfield 的字符串,无论用户是否选择该 tableviewcell 您只想在用户点击登录按钮时存储 uitextfiled 中的字符串,对吗?还有一个问题,您想将 uitextfield 中的此字符串存储在哪里? 是的,基本上显示了 4 个单元格 - 用户名、密码、客户 ID 和设备 ID。当用户点击登录时,我想将所有这些单元格的值存储到字符串中。然后它们用于验证登录请求并存储在 NSUserDefaults 但是我试图从中获取文本的文本字段是在自定义 UITableViewCell 类中声明的,因此不起作用

以上是关于从 UITableView 获取 UITextField 文本的主要内容,如果未能解决你的问题,请参考以下文章

在通过数据源创建的 UITextField 中显示占位符文本

从 UITableView 获取 UITextField 文本

UITableview:无法从其数据源获取单元格

如何从 UITableView 获取行索引,其中数组列表由追加到类

从 NSDate 获取 UITableView 标题

从具有 id 的 UItableview 单元格中获取数据