[英]How to iterate all the UIViewControllers on the app
我有一個這種結構的xib:
- Tab Bar Controller
-- Tab Bar
-- NavigationController
--- Navigation Bar
--- News List View Controller
---- Navigation Item
--- Tab Bar Item
-- NavigationController
--- Navigation Bar
--- News List View Controller
---- Navigation Item
--- Tab Bar Item
-- NavigationController
--- Navigation Bar
--- News List View Controller
---- Navigation Item
--- Tab Bar Item
[...]
如何編寫循環以在每次迭代中獲取每個UIViewController(新聞列表視圖控制器)?
像這樣以代碼方式訪問它們:
NSArray * controllerArray = [[self navigationController] viewControllers];
for (UIViewController *controller in controllerArray){
//Code here.. e.g. print their titles to see the array setup;
NSLog(@"%@",controller.title);
}
如果您使用的是iOS 5,可以執行以下操作:
- (void) processViewController: (UIViewController *) viewController {
//do something with viewcontroller here
NSLog(@"I'm viewcontroller %@", viewController);
for ( UIViewController *childVC in viewController.childViewControllers ) {
[self processViewController:childVC];
}
}
並開始有趣的:
[self processViewController:myRootViewController]; //would be the tabbarcontroller in your case
編輯:我不確定你想在這里實現什么,但是這段代碼是為了遍歷整個樹。
編輯2:
對於iOS 4,請嘗試以下方法:
- (void) processViewController: (UIViewController *) viewController {
//do something with viewcontroller here
NSLog(@"I'm viewcontroller %@", viewController);
if ( [viewController isKindOfClass:[UITabBarController class]] ) {
for ( UIViewController *childVC in ((UITabBarController *)viewController).viewControllers ) {
[self processViewController:childVC];
}
}
else if ( [viewController isKindOfClass:[UINavigationController class]] ) {
for ( UIViewController *childVC in ((UINavigationController *)viewController).viewControllers ) {
[self processViewController:childVC];
}
}
}
注意:您需要添加任何具有subviewcontrollers的自定義viewcontroller。 如果你有任何..根視圖控制器再次啟動它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.