我的情况是我的主视图控制器(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:];
。)
我可以使用我现在拥有的,但想知道这样做的替代方法,主要是因为我对模态视图控制器的过渡动画不满意,宁愿使用翻转动画。
提前致谢!
答案 0 :(得分:0)
答案 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];
}
还有更多过渡样式,例如UIModalTransitionStyleCoverVertical
,UIModalTransitionStyleCrossDissolve
和UIModalTransitionStylePartialCurl
。