Доступ к подпредставлению в текущем представлении - PullRequest
0 голосов
/ 04 июня 2011

Я создал представление с подпредставлением с помощью следующего кода в моем файле AppDelegate.m

//in AppDelegate.m file
//Initializeing the navcon, photoviewtable and default loading page
self.navcon = [[UINavigationController alloc]init];
self.photoViewTable = [[PhotoTableViewController alloc]init];
self.loadingPage = [[LoadingPageViewController alloc]init];

[self.photoViewTable.view addSubview:loadingPage.view];

[navcon pushViewController:photoViewTable animated:NO];
[self.window addSubview:navcon.view];

Как получить доступ к подпредставлению LoadingPage.view, когда я нахожусь в PhotoTableViewController.view?

Ответы [ 3 ]

5 голосов
/ 04 июня 2011

используйте tag свойство UIView, чтобы получить loadingPage.view в PhotoTableViewController.

loadingPage.view.tag = 111;
[self.photoViewTable.view addSubview:loadingPage.view];

В вашем photoViewTable классе.

LoadingPageViewController*  myLoadingPage = (LoadingPageViewController*) [self.view viewWithTag:111];
4 голосов
/ 04 июня 2011

Если вы не пометите его ссылкой или тегом, вы сможете получить его вот так.

for ( UIView *subview in self.view.subviews ) {
    if ( [[subview nextResponder] isMemberOfClass:[LoadingPageViewController class]] ) {
        // 'subview' is your view
    }
}
3 голосов
/ 04 июня 2011

Вы пытаетесь использовать два контроллера представления одновременно:

self.photoViewTable = [[PhotoTableViewController alloc]init];
self.loadingPage = [[LoadingPageViewController alloc]init];

[self.photoViewTable.view addSubview:loadingPage.view];

Если LoadingPageViewController является подклассом UIViewController, приведенный выше код неверен.Помимо контроллеров представления «контейнер», таких как UINavigationViewController, в данный момент должен быть активен только один контроллер представления.См. мой ответ в этой ветке SO для более полного изложения ситуации.Короче говоря, UIViewController предназначен для управления содержимым всего экрана, и большая часть функциональности, которую вы получаете от UIViewController, относится к управлению этими экранами.

Чтобы ответить на ваш вопрос более прямо, давайте проигнорируем несколько UIViewControllerвыдать и просто посмотреть на ответственность каждого объекта.Поскольку вы создали объект (loadingPage) для управления какой-то группой представлений, photoViewTable действительно должен позволить loadingPage выполнять свою работу и избегать попыток напрямую манипулировать представлениями loadingPage.Дайте PhotoTableViewController указатель на LoadingPageViewController, чтобы photoViewTable мог отправлять сообщения в loadingPage.

...