2013-03-12 2 views
1

Я использую шаблон проекта 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)?

ответ

0

Объекты IBOutlet будут созданы во время viewDidLoad() этого объекта (подробный вид, но не главный вид).

вызов [self updateDetails]; в viewdidLoad() метод контроллера подробного представления, чтобы избежать этой проблемы.

+0

пытался избежать этого, так как неясно, будет ли self.details будет пустым при вызове viewDidLoad od detail view controller. self.sortedObjects заполняется из URL-адреса другого потока, а setObject вызывается, когда это делается. Я думаю, что лучший способ - вызвать updateDetails из нескольких мест и проверить, будет ли self.detailLabel (null). – TijuanaKez

Смежные вопросы