我正在使用iPad主/详情项目模板,而我正在尝试在首次运行该应用时更新UILabels
中的detailViewController
。
这是我的代码:
(void)setObject:(id)newObject
{
if (_object != newObject) {
[_object release];
_object = [newObject retain];
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
[self updateDetails];
}
- (void) updateDetails
{
NSLog(@"Details = %@", self.details);
NSLog (@"detailLabel %@", self.detailLabel);
self.detailLabel.text = [self.details objectForKey:@"aKey"];
}
- (IBAction)refresh:(UIBarButtonItem *)sender {
[self updateDetails];
}
从主视图控制器的setEvent
方法调用 viewDidLoad
作为默认选择它的tableview的第一行。
if (![self.tableView indexPathForSelectedRow])
{
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];
[self.detailViewController setObject:[self.sortedObjects objectAtIndex:0]];
}
运行代码时,detailLabel
未更改,NSLog
表示self.detailLabel
为(null)。如果稍后从按钮调用“刷新”,则单击detailLabel
不为空并正确更新。我该怎么做才能确保detailLabel
已经创建而不是(null)?
答案 0 :(得分:0)
IBOutlet对象将在该对象的viewDidLoad()时创建(详细视图,但不是主视图)。
在详细视图控制器的viewdidLoad()方法中调用[self updateDetails];
以避免此问题。