iphone - 获取 UITableViewCell 的 subview (UITextField 或 UILabel)——两种方式,一种有效,一种无效——为什么?

标签 iphone ios uitableview uitextfield

我有一个 UITableViewCell,它是通过包含 UITextFieldUILabel 的 Storyboard 设计的。我想在调用 cellForRowAtIndexPath 时更新这些 View 的值。

我首先尝试像这样获取对文本字段和标签的引用:

UITextField *textfield = (UITextField*)[cell.contentView viewWithTag:10];
UILabel *label = (UILabel*)[cell.contentView viewWithTag:20];

这适用于 UILabel,但我只能在第一次创建单元格时获得对 UITextField 的引用,我能够设置原始值(textField.text) 但从不更新它。如果我检查 subview 数组,我可以看到 UITextField 在那里,我只是无法使用 viewWithTag 访问它。我切换到这个(下面)并且它有效:

UITextField* textField = [[cell.contentView subviews] objectAtIndex:0];
UILabel *label = [[cell.contentView subviews] objectAtIndex:1];

为什么第一种方法不起作用?执行此操作的正确方法是什么?

此代码在以下上下文中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath
{
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DetailCell" forIndexPath:indexPath];
  UITextField* textField = [[cell.contentView subviews] objectAtIndex:0];
  textField.text = @"<something>";
  UILabel *label = [[cell.contentView subviews] objectAtIndex:1];
  label.text = @"<something else>";
  return cell;
}

最佳答案

对不起。这只是我这边的一个错误,我很抱歉浪费你的时间。我覆盖了 Storyboard UI 中设置的 textField.tag 的值。 (我依赖它是 Storyboard 中设置的值,但事实并非如此)。原始代码运行正确。仍然不确定哪种方法更好。假定特定索引或特定标记值是否更安全?这些对我来说都不安全。

关于iphone - 获取 UITableViewCell 的 subview (UITextField 或 UILabel)——两种方式,一种有效,一种无效——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879326/

相关文章:

ios - 您可以发送不唤醒手机的 iOS 推送通知吗?

ios - 如何在 iOS 模拟器中模拟 iPhone 进入休眠状态?

mysql - 适用于 iPhone 和 mysql 的 Objective-c 应用程序

objective-c - 执行操作后显示或关闭特定的 ViewController

ios - 如何为特定单元格分配标签?

iphone - iOS 开发 : How can I animate the addition/removal of form controls in a view?

iphone - IOS 5内置的用于JSON解析的API可以在低版本手机上使用吗?

ios - 当其他应用程序中的声音正在播放时录音停止

ios - Tableview didSelectRowAtIndexPath 不起作用

ios - 如何在 Objective-C 中使用 Segue TableView Controller 单元格单击和单元格长按