代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Berthiaume

如何通过程序启动/处置iPhone的视图?

  •  3
  • Jeffrey Berthiaume  · 技术社区  · 16 年前

    我没有使用选项卡或任何其他控件——我基本上想动态地将当前视图更改为其他视图控制器(即通过代码)。我根本不使用界面生成器…

    例如,假设我们创建三个视图控制器:

    (这也许不是最好的例子,但我想把它简单化)

    视图\hello.m(和.h)

    再见,M(和H)

    视图ciao.m(和.h)

    我们的viewerAppDelegate将启动view01“你好。

    查看“你好”将有一个自定义的触摸方法,然后需要去查看刷,但查看“再见”如果只是触摸。

    关于如何做到这一点的任何想法(请不要说“哦,这个例子需要使用xxx接口元素”。我需要能够在我正在工作的应用程序的视图中根据编程控制随机更改视图)

    在过去的一周里,我一直在谷歌和StackOverflow上冲浪,浏览了我的三本O'Reilly Cocoa书(加上三本iPhone开发人员的书),所有的书都只使用简单的界面——但没有什么能像我所做的那样显示出一个例子。

    国际贸易协会

    编辑(@andrew grant):

    例如:

    View_Ciao *viewCiao; 
    -(void) viewDidLoad { 
      viewCiao = [[View_Ciao alloc] initWithNibName:@"View_Ciao" bundle:nil];
      [viewCiao.view setNeedsDisplay];
      [super viewDidLoad];
    }
    

    这是撞车事故。-)

    企业的价值

    编辑(@daniel dickison)

    太棒了——成功了!

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
    
        [window addSubview:viewController.view];
        [window makeKeyAndVisible];
    
        // create the second view, remove the first, and then display the second
    
        viewCiao = [[ViewCiao alloc] init];
        [viewController.view removeFromSuperview];   
        [window addSubview:viewCiao.view];
    }
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   Daniel Dickison    16 年前

    比如:

    @interface AppDelegate : ...
    {
        View_Hello *hello;
        View_Goodbye *goodbye;
        View_Ciao *ciao;
        UIViewController *currentView;
        UIWindow *window;
    }
    ... IBOutlet properties for the 3 controllers.
    @end
    
    @implementation AppDelegate
    - (void)switchToGoodbye
    {
        [currentView.view removeFromSuperview];
        [window addSubview:goodbye.view];
        currentView = goodbye;
    }
    ... etc.
    @end
    

    在将视图添加到窗口之前,可能需要调整视图的大小,然后调用 viewWillDisappear: , viewDidDisappear: , viewWillAppear: viewDidAppear: 在移除/添加当前视图和新视图控制器之前和之后。

        2
  •  2
  •   Nick    16 年前

    你看过艾丽卡·萨登的2-8号食谱“侧击视图”吗? iPhone开发者的食谱 ?她使用touchebegan和touchemoved确定滑动方向,然后根据touchended中的方向设置动画。

    您可以扩展或修改此项以添加抽头检测,以确定要转换到哪个视图。如果你想看的话,食谱在第69页左右。还有一个 video (mov) sample here 和A code sample here.

        3
  •  1
  •   Andrew Grant    16 年前

    加载适当的视图并将其作为子视图添加到父视图中,然后从父视图中移除现有视图。

    如果您只有一个级别的视图,那么您的窗口就是父视图。