Iphone 你能解释一下为什么这个NavigationController设置有效吗
我正在尝试了解如何设置NavigationController。我不明白为什么这段代码同时适用于pushViewController和presentModalViewController。我想一定是这样或那样 对于上下文,这是一个创建UIImagePickerController的UIViewController。之后有两个视图控制器,第一个(EditPictureViewController)编辑图像本身,第二个编辑属性。相信我应该使用presentModalViewController …还有没有一种方法可以不关闭模式视图控制器,这样我就可以在EditPictureView控制器上有一个“重拍图片”按钮 谢谢Iphone 你能解释一下为什么这个NavigationController设置有效吗,iphone,ios,uiviewcontroller,uinavigationcontroller,modalviewcontroller,Iphone,Ios,Uiviewcontroller,Uinavigationcontroller,Modalviewcontroller,我正在尝试了解如何设置NavigationController。我不明白为什么这段代码同时适用于pushViewController和presentModalViewController。我想一定是这样或那样 对于上下文,这是一个创建UIImagePickerController的UIViewController。之后有两个视图控制器,第一个(EditPictureViewController)编辑图像本身,第二个编辑属性。相信我应该使用presentModalViewController …还
- (void)viewDidLoad {
[super viewDidLoad];
self.navController = [[UINavigationController alloc] init]; }
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissModalViewControllerAnimated:NO];
EditPictureViewController *viewController = [[EditPictureViewController alloc] initWithImage:image];
[viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self.navController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self.navController pushViewController:viewController animated:NO];
[self presentModalViewController:self.navController animated:YES]; }
这会将EditPictureViewController推送到NavigationController的视图堆栈上
[self.navController pushViewController:viewController animated:NO];
然后在此处显示NavigationController:
[self presentModalViewController:self.navController animated:YES];
我的意思是,您所做的只是从视图控制器显示一个模式视图,而该模式恰好是导航控制器。您的设置不是“这是正常的做法。标准范例是在didFinishPickingMediaWithInfo:方法中创建导航控制器,并将其根视图控制器设置为viewController,而不是推送它。您通常认为“推送”是移动到下一个控制器,而实际上您所做的只是以非标准方式设置根视图控制器。此外,您还应该使用当前的方法来显示和取消模式视图控制器——您正在使用的那些控制器将被折旧。我不确定您是否需要设置这两种过渡样式。试着注释一个,看看它是否仍然有效
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissViewControllerAnimated:NO completion:nil];
EditPictureViewController *viewController = [[EditPictureViewController alloc] initWithImage:image];
self.navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self.navController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:self.navController animated:YES completion:nil];
}啊。让我确定我明白了。第一行将其添加到导航控制器,而第二行则显示导航控制器。是这样吗?