我的iOS应用中有UITableView
个'人'。我已经创建了一个“添加”屏幕,可以将新人添加到我的持久存储中,这非常有效。
此添加视图使用使用UITableView
和子类UITableViewCell
创建的表单,其中包含UITextField
和UILabel
,虽然效果很好,但我还是很新的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)
我希望这是足够的解释。任何指针都会有很多帮助!
答案 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。