0

我的 iOS 应用程序有一个UITableView“人”。我创建了一个“添加”屏幕来将新人添加到我的持久存储中,效果很好。

这个添加视图使用一个用 aUITableView和子类创建的表单UITableViewCell,用一个UITextFieldand UILabel,虽然效果很好,但我对 iOS 编程很陌生,觉得这可能不是最有效的方法。

我正在尝试将此添加视图重新用作我的详细信息、添加和编辑视图,并且我可以成功地将“人员”实体设置为详细信息视图中的属性。我的viewDidLoad方法中有以下代码,其中adding属性是prepareForSegue在前一个 ViewController 的方法中设置的:

if (self.adding)
{
    self.editing = YES;
    self.title   = @"Add Person";
}
else
{
    self.title = self.person.name;

    [self setDetail];
}

我的问题是,当我尝试预填充我的详细视图的字段(我的setDetail方法)时,我无法使用我的 person 实体的 name 属性设置我的 UITextField 文本。这是我用来检索 UITextField 并设置它的text属性的代码:

form是 UITableView;

UITableViewCell *nameCell  = [form cellForRowAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]];
UITextField     *nameField = (UITextField *)[nameCell viewWithTag:100];
nameField.text = self.person.name;

如果我 NSLognameCell它返回(null)

我希望这是足够的解释。任何指针都会有很大帮助!

4

2 回答 2

1

而不是在 viewDidLoad: 中设置,而是在表视图数据源方法中进行。IE

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     // Deque the nameCell and prepare the cell if its not available.
     UITextField     *nameField = (UITextField *)[nameCell viewWithTag:100];
     nameField.text = self.person.name;
     return nameCell.
}
于 2013-04-15T22:26:54.707 回答
0

我不太明白你的问题,但cellForRowAtIndexPath可能会返回 nil 因为

返回值
表示表格单元格的对象,如果单元格不可见或 indexPath 超出范围,则返回 nil。

官方文档:cellForRowAtIndexPath:

于 2013-04-16T02:33:11.277 回答