在不使用UITabBar或Nav Controller的情况下交换View Controller

时间:2011-03-18 11:41:33

标签: iphone ios

我在View控制器中有一个分段控件。

我希望在点击细分时将不同的视图加载到中间。有效地使它成为标签栏控制器。 (问:为什么不使用标签栏控制器,A:我已经有一个)

以下是我的要求:

  1. 我想在任何地方使用视图控制器。一个'超级视图控制器'来管理分段控制。两个“子视图控制器”,用于在分割控件时显示内容。

  2. 我希望查看加载/卸载和其他消息来到您期望的子视图控制器。

  3. 我想要一个整洁,优雅的解决方案。最小的黑客攻击。

  4. 我目前的实施在第2点失败:

    - (IBAction)valueChanged:(id)sender {
    
            switch (self.segmentedControl.selectedSegmentIndex) {
    
                case 0:
                    {
                        ThirdVC* vc = [[ThirdVC alloc] initWithNibName:@"ThirdVC"
                                         bundle:nil];
                        [self.centerView addSubview:vc.view];
    
                    }   
                    break;
                   ... etc
    

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

也许我对Implementing my own navigation controller?的回答会有所帮助。

但我不知道它是否真的很优雅而且不是黑客

答案 2 :(得分:0)

在上面的代码中。

  1. 您正在每次点击时创建一个新的viewcontroller而不是释放它。这将导致内存泄漏。
  2. 解。

    您可以为超级视图控制器创建UIViewController的两个实例变量(表示: - Sub Viewcontrollers)。

    您可以根据段操作向超级视图控制器添加和删除此子视图控件。

    您可以使用

    收听视图加载/卸载消息

    - (void)viewWillAppear:(BOOL)动画

    (无效)viewWillDisappear:(BOOL)动画

    Sub View Controller的方法。

    希望这会有所帮助。