Objective c 这是添加视图的正确方法吗?

Objective c 这是添加视图的正确方法吗?,objective-c,xcode,ios5,xcode4.3,Objective C,Xcode,Ios5,Xcode4.3,我制作了一个显示表格的程序 如果人们点击搜索,我会添加另一个覆盖原始视图的视图。原始视图为[BNUtilitiesQuickListNewController] [[BNUtilitiesQuick window] addSubview:[BNUtilitiesQuick searchController].view]; [[bnUtilitiesQuickSearchController]视图将显示:YES]确实被调用。因此,UIView似乎有一个指向其控制器的指针 但是,不会调用[[BNU

我制作了一个显示表格的程序

如果人们点击搜索,我会添加另一个覆盖原始视图的视图。原始视图为[BNUtilitiesQuickListNewController]

[[BNUtilitiesQuick window] addSubview:[BNUtilitiesQuick searchController].view];
[[bnUtilitiesQuickSearchController]视图将显示:YES]
确实被调用。因此,UIView似乎有一个指向其控制器的指针

但是,不会调用
[[BNUtilitiesQuick listnewcontroller]视图将消失]
的视图

此外,即使用户使用以下代码完成了对搜索词的修改,也不会调用
[[BNUtilitiesQuick listnewcontroller]视图]

[self.view removeFromSuperview];
我想我可能遗漏了什么。我到底应该怎么做才能让IOs知道searchController.view将覆盖listNewController

ViewController *viewController = [[ViewController alloc] init];    
[self.navigationController pushViewController:viewController animated:YES];

我会考虑使用PuxVIEW控制器来添加全屏视图。addSubview用于不覆盖整个屏幕的视图。

这不是正确的方法。如果searchController是全屏控制器,则应使用presentViewController以模式显示它,或按照@StuR的建议将其推送到导航堆栈上

如果您的搜索视图只覆盖listnewcontroller的一部分,您应该在iOS5中使用包含API

在listnewcontroller(父视图控制器)中,您可以编写:

[self addChildViewController:self.searchController];
[self.view addSubview:self.searchController.view];
[self.searchController didMoveToParentViewController:self];

有关更深入的信息,请查看WWDC 2011课程视频“实现UIViewController控制”。另外,请观看2012年开始的“iOS上视图控制器的演变”,因为iOS6中有一些更改和弃用。

视图将消失,并且只有在弹出或推送给定的视图控制器时才会调用视图。您只需在当前viewController的内部(顶部)添加一个子视图及其自己的viewController。正如StuR所说,如果要关闭当前的ViewController,应使用:

BNUtilitiesQuick*searchController=[BNUtilitiesQuick alloc]init]; [self.navigationController pushViewController:searchController动画:是]


您可以在此处阅读有关ViewController的更多信息:

但是,新的搜索在navigationcontroller之外。