【问题标题】:Is this the right way to add a view?这是添加视图的正确方法吗?
【发布时间】:2012-06-26 09:35:29
【问题描述】:

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

如果人们点击搜索,我将添加另一个覆盖原始视图的视图。原视图为[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?

【问题讨论】:

    标签: objective-c xcode ios5 xcode4.3


    【解决方案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 遏制”。还要观看 2012 年的“iOS 上视图控制器的演变”,因为 iOS6 中有一些更改和弃用。

    【讨论】:

      【解决方案2】:
      ViewController *viewController = [[ViewController alloc] init];    
      [self.navigationController pushViewController:viewController animated:YES];
      

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

      【讨论】:

      • 但是,新的搜索在导航控制器之外。
      【解决方案3】:

      viewWillDisappear 和 viewWillAppear 只有在你弹出或推送给定的 viewController 时才会被调用。您很容易在当前视图控制器的内部(顶部)添加一个带有它自己的视图控制器的子视图。正如 StuR 所说,如果你想关闭当前的 ViewController,你应该使用:

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

      您可以在此处阅读有关 ViewController 的更多信息:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457

      【讨论】:

        猜你喜欢
        • 2013-02-18
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        相关资源
        最近更新 更多