Проблемы с раскадровкой - PullRequest
0 голосов
/ 30 января 2012

недавно я начал использовать раскадровку, и у меня возникает следующая ситуация: я хочу установить текст UILabel из AppDelegate. Итак, я создал экземпляр моего ViewController

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                             bundle: nil];

    ViewController *controller = (ViewController*)[mainStoryboard 
                                                       instantiateViewControllerWithIdentifier: @"mainViewController"];

    myViewController = controller;

    [window addSubview:myViewController.view];
    [window makeKeyAndVisible];

и вызвал следующий метод из делегата

- (void) updateParameterLabel:(NSString *)parameter {

    NSLog(@"URL-2: %@", parameter);

    parameterLabel.text = parameter;
}

Но этот параметр не отображается в пользовательском интерфейсе.

Еще одна мысль, которая является своего рода яростью:

* * 1010

«Вид действительно появился» регистрируется дважды ...

Есть какие-нибудь намеки?

С уважением, Sascha

Ответы [ 3 ]

2 голосов
/ 30 января 2012

Установка текста UILabel от вашего делегата приложения - не лучший дизайн.Ваши контроллеры представлений должны управлять содержимым ваших представлений, отсюда и их имя.Обычно ваша раскадровка создается автоматически, и вам не нужен какой-либо из storyboardWithName et кода, который вы получили, при условии, что вы работаете со стандартными шаблонами Apple.более строго следовать шаблону «модель-представление-контроллер», а также посмотреть, как Apple автоматически создает раскадровки (для этого просто создайте новый проект раскадровки в XCode).

0 голосов
/ 27 апреля 2012

Для того, что я вижу, вы пытаетесь обновить метку до ее появления, так почему бы вам не попробовать вызвать метод updateLabel в viewWillAppear, это будет что-то вроде этого

-(void)viewWillAppear:(BOOL)animated{
 [self updateParameterLabel:@"Some Text"];
 [super viewWillAppear:YES];
}

И updateParameterLabelдолжен быть реализован в viewController.

0 голосов
/ 30 января 2012

Если вы все еще хотите заставить его работать, сделайте UILabel свойством viewcontroller и установите метку с помощью

В делегате:

- (void) updateParameterLabel:(NSString *)parameter {

    NSLog(@"URL-2: %@", parameter);
    [myViewController updateParemeter:parameter];
}

В myViewController:

- (void) updateParameterLabel:(NSString *)parameter {

    NSLog(@"URL-2: %@", parameter);

    parameterLabel.text = parameter;
    [self.view setNeedsDisplay];//edit
}

Так что используйте viewController для обновления вашего ярлыка. Конечно, вам нужен ярлык property в вашем viewController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...