我通过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

最佳答案

您正在尝试同时使用两个视图控制器:

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

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


如果LoadingPageViewController是UIViewController子类,则上面的代码不正确。除了UINavigationViewController之类的“容器”视图控制器外,在给定时间应该只有一个视图控制器处于活动状态。请参阅my answer中的this SO thread,以获取有关该情况的更完整概述。简而言之,UIViewController旨在管理整个屏幕的内容,并且您从UIViewController获得的大多数功能都与管理这些屏幕有关。

为了更直接地回答您的问题,让我们忽略多个UIViewController问题,只看每个对象的责任。由于您已经创建了一个对象(loadingPage)来管理某些视图组,因此photoViewTable应该真正让loadingPage做好其工作,并避免尝试直接操纵loadPage的视图。给PhotoTableViewController一个指向LoadingPageViewController的指针,以便photoViewTable可以将消息发送到loadingPage。

关于objective-c - 在当前 View 中访问 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6235638/

10-10 22:41