Я использую шаблон проекта iPad/detail project, и я пытаюсь обновить UILabels
в detailViewController
, когда приложение запускается впервые.Когда создатель интерфейса Созданы объекты IBOutlet
Вот мой код:
(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
метода Master View Controller, как выбрать это первая строка 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
является (нуль). Если «refresh» вызывается позже с помощью кнопки, нажмите detailLabel
, не имеет значения null и обновляется корректно. Как я могу сделать это, чтобы убедиться, что detailLabel
был создан и не является (null)?
пытался избежать этого, так как неясно, будет ли self.details будет пустым при вызове viewDidLoad od detail view controller. self.sortedObjects заполняется из URL-адреса другого потока, а setObject вызывается, когда это делается. Я думаю, что лучший способ - вызвать updateDetails из нескольких мест и проверить, будет ли self.detailLabel (null). – TijuanaKez