iOS无法在UITableViewCell中设置UITextField文本属性

时间:2013-04-15 22:02:42

标签: iphone ios objective-c cocoa-touch uitableview

我的iOS应用中有UITableView个'人'。我已经创建了一个“添加”屏幕,可以将新人添加到我的持久存储中,这非常有效。

此添加视图使用使用UITableView和子类UITableViewCell创建的表单,其中包含UITextFieldUILabel,虽然效果很好,但我还是很新的iOS编程并觉得这可能不是最有效的方式。

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

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;

如果我NSLog nameCell它返回(null)

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

2 个答案:

答案 0 :(得分:1)

而不是在viewDidLoad:中设置,在表视图数据源方法中执行此操作。即

- (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.
}

答案 1 :(得分:0)

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

  

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

正式文件:cellForRowAtIndexPath: