通过当前视图控制器内的操作方法在视图控制器之间切换

时间:2011-12-12 17:12:45

标签: iphone objective-c ios uinavigationcontroller

我的情况是我的主视图控制器(UIViewController中的PrimaryViewController.h .m)包含UIButton。按下时,会显示第二个视图控制器(UINavigationController),一般的想法是按“设置”按钮并弹出导航视图,并允许用户修改其设置。

我能够做到这一点,但我对我的方法并不完全有信心。在主视图控制器内部,我添加了一个导航控制器,并将其作为主控制器内的插座进行链接。然后按下按钮时,调用函数showSettings

- (IBAction)showSettings {
    [self presentModalViewController:navigationViewController animated:YES];
}

类似地,调用hideSettings来关闭。虽然这确实有效,但我不确定我是以最好还是正确的方式做到这一点。我之前尝试在MainWindow.xib中创建导航控制器并将其与App Delegate链接,但我遇到了一个问题,我需要在PrimaryViewController.m实现文件中调用/显示此控制器并且不能找不到如何做到这一点(即如何在App Delegate类之外执行[super addSubview:];。)

我可以使用我现在拥有的,但想知道这样做的替代方法,主要是因为我对模态视图控制器的过渡动画不满意,宁愿使用翻转动画。

提前致谢!

3 个答案:

答案 0 :(得分:0)

哟,

在开始iPhone开发的第6章中有一个很好的切换视图的例子。您可以在此处查看其源代码:http://iphonedevbook.com/

或查看this帖子

干杯

答案 1 :(得分:0)

这是我要做的: 1.为导航控制器创建单独的类文件。比如叫它MyNavigateController。您可以将其添加到YourAppAppDelegate。 MyNavigateController.h如下所示:

@interface MyNavigateController : UIViewController 
{
    UINavigationController *navController;
}
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@end

MyNavigateController.m对于viewDidLoad方法看起来像这样:

- (void)viewDidLoad
{
[self.view addSubview:self.navController.view];
}

对于MyNavigateController.xib,使用拖动导航控制器对象并将其分配给您的PrimaryViewController类。

在您的PrimaryViewController类

- (IBAction)showSettings {
    ChildViewController *childViewController = [ChildViewController alloc]initWithNibName:@"ChildViewController" bundle:nil];
//childViewController.ivarsifany = ....  //optionaly assign values to ivars etc.
    [self.navigationController pushViewController:childViewController
                                         animated:YES];
}

答案 2 :(得分:0)

如果您唯一的问题是presentModalViewController:的特定过渡动画,那么您只需更改过渡类型即可。有一些不同的给定过渡动画,如下所示:

- (IBAction)showSettings {
    [navigationViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentModalViewController:navigationViewController animated:YES];
}

还有更多过渡样式,例如UIModalTransitionStyleCoverVerticalUIModalTransitionStyleCrossDissolveUIModalTransitionStylePartialCurl