Как перезагрузить uiviewcontroller на iPhone - PullRequest
0 голосов
/ 19 июля 2009

Я пытаюсь перезагрузить значение, которое я установил в UIViewController, чтобы обновлять каждый раз, когда я перехожу с этим кодом (приходят и уходят оба UIViewControllers):

    coming.phoneNumber = aPhoneNumber;
    [coming viewWillAppear:YES];
[going viewWillDisappear:YES];
[going.view removeFromSuperview];
[self.window insertSubview: coming.view atIndex:0];
[going viewDidDisappear:YES];
[coming viewDidAppear:YES];

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

Ответы [ 2 ]

1 голос
/ 19 июля 2009

Вы должны получить желаемое поведение, изменив атрибуты UIViewController только после загрузки представленного им UIView:

[coming viewWillAppear:YES];
[going viewWillDisappear:YES];
[going.view removeFromSuperview];
[self.window insertSubview:coming.view atIndex:0];
<strong>coming.phoneNumber = aPhoneNumber;</strong>
[going viewDidDisappear:YES];
[coming viewDidAppear:YES];

В приведенном выше коде загруженный UIViewController был загружен, но представляемый им UIView не загружается до тех пор, пока к нему не получат доступ в первый раз с помощью come.view. Это объясняется в документации для UIViewController :

Если вы обращаетесь к свойству [view] и его значение в настоящий момент равно nil, контроллер представления автоматически вызывает метод loadView и возвращает получившееся представление.

Вы можете определить, был ли загружен UIView с помощью метода -isViewLoaded в UIViewController.

0 голосов
/ 19 июля 2009

Я предполагаю, что phoneNumber является строкой NSString. Вы должны помнить, что есть различие между чем-то, отображаемым на экране, и объектом, поддерживающим это. UITextField, показывающий определенное значение, не совпадает с NSString, из которого оно получило это значение, и когда вы изменяете NSString, вам нужно изменить значение UITextField, если вы хотите, чтобы оно отображалось.

Если у вас нет пользовательской реализации setPhoneNumber: в будущем или если вы используете KVO для наблюдения за значением, отображение, отображаемое с помощью phoneNumber, будет невозможно, чтобы узнать, что находится на экране.

Похоже, вы пытаетесь реализовать UINavigationController или UITabBarController. Если это вообще возможно, вы должны просто использовать один из них, а не пытаться справиться со всеми переходами самостоятельно. Они заботятся о присоединении и отключении представлений, просмотра вызовов (Сделано / Будет) (Появляются / Исчезают) и т. Д.

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