我制作一个显示表格的程序。
如果有人点击搜索,我会添加另一个覆盖原始视图的视图。原始视图是[BNUtilitiesQuick listnewcontroller];
[[BNUtilitiesQuick window] addSubview:[BNUtilitiesQuick searchController].view];
确实叫 [[BNUtilitiesQuick searchController] viewWillAppear:YES]
。所以似乎UIView有一个指向它控制器的指针
但是,[[BNUtilitiesQuick listnewcontroller] viewWillDisappear]
未被调用
此外,即使用户使用以下代码修改了搜索字词,也不会调用[[BNUtilitiesQuick listnewcontroller] viewWillAppear]
:
[self.view removeFromSuperview];
我想我可能会在这里遗漏一些东西。无论如何我应该做什么,以便IO知道searchController.view将覆盖listNewController?
答案 0 :(得分:1)
这不是正确的方法。如果searchController是一个全屏控制器,你应该使用presentViewController以模态方式呈现它,或者按照@StuR的建议将其推送到导航堆栈。
如果您的搜索视图仅涵盖listnewcontroller的一部分,则应使用iOS5中的包含API。
在listnewcontroller(父视图控制器)中你会写:
[self addChildViewController:self.searchController];
[self.view addSubview:self.searchController.view];
[self.searchController didMoveToParentViewController:self];
有关更深入的信息,请查看WWDC 2011会话视频"实施UIViewController Containment"。另外观看" iOS上的视图控制器的演变"从2012年开始,因为iOS6中有一些更改和弃用。
答案 1 :(得分:0)
ViewController *viewController = [[ViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
我会考虑使用pushViewController添加全屏视图。 addSubview适用于未覆盖整个屏幕的视图。
答案 2 :(得分:0)
BNUtilitiesQuick * searchController = [BNUtilitiesQuick alloc] init]; [self.navigationController pushViewController:searchController animated:YES];
您可以在此处详细了解ViewControllers:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457