iPhone UILabel не обновляется при первой загрузке - PullRequest
1 голос
/ 21 марта 2011

У меня есть UILabel, который не обновляется при первой загрузке, но загружается правильно при каждой последующей загрузке.

Вот фрагмент кода.Опять же, как я уже сказал, только при первой загрузке будет отображаться то, что указано в метке в xib, то есть label, а во второй раз будет загружена строка label.text= @"Glass, Paper, Cans, Textiles, Card, Shoes and Books";.

-(IBAction)showDetails:(id)sender{
    NSLog(@"Annotation Click");
    self.userProfileVC.title=((UIButton*)sender).currentTitle;
    if([((UIButton*)sender).currentTitle isEqualToString:@"Asda"])
        self.userProfileVC.label.text= @"Glass, Paper, Cans, Textiles, Card, Shoes and Books";

    [UIView beginAnimations:@"Curl Page Down" context:nil];
    [UIView setAnimationDuration:1];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
                       forView:self.view cache:YES];    

    //Adjust the Subview by butting up to status bar
    self.userProfileVC.view.frame = CGRectMake(0, 0, 320, 480);
    //Add userProfileVC as a subview
    [self.view addSubview:userProfileVC.view];
    [UIView commitAnimations];
}

Ответы [ 3 ]

0 голосов
/ 21 марта 2011

Я полагаю, что при первом обращении к self.userProfileVC.label, label по-прежнему nil, поскольку само представление еще не было загружено. Быстрое решение заключается в том, что сначала необходимо загрузить представление, поместив оператор self.userProfileVC.view; в начале метода showDetails.

0 голосов
/ 21 марта 2011

Я такой идиот, я изменил порядок своего кода .... сначала загрузите представление перед метками. DOH!

Вот фрагмент:

- (IBAction) ShowDetails: (идентификатор) отправитель {

//Must load the view before the annotations update the label with the correct label text!
[UIView beginAnimations:@"Curl Page Down" context:nil];
[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
                       forView:self.view cache:YES];    

//Adjust the Subview by butting up to status bar
self.userProfileVC.view.frame = CGRectMake(0, 0, 320, 480);
//Add userProfileVC as a subview
[self.view addSubview:userProfileVC.view];
[UIView commitAnimations];

NSLog(@"Annotation Click");
self.userProfileVC.title=((UIButton*)sender).currentTitle;
if([((UIButton*)sender).currentTitle isEqualToString:@"Asda"])
    self.userProfileVC.label.text= @"Glass, Paper, Cans, Textiles, Card, Shoes and Books";
0 голосов
/ 21 марта 2011

Предположительно, этот код вызывается при нажатии кнопки UIB.Поэтому при первой загрузке пользовательского интерфейса я не ожидал, что ваш метод будет вызван (так как ни одна кнопка не была нажата).Почему бы вам не попробовать установить текст по умолчанию в viewDidLoad или аналогичный?

например что-то вроде:

- (void)viewDidLoad {
    self.userProfileVC.label.text= @"Glass, Paper, Cans, Textiles, Card, Shoes and Books";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...