0

我正在尝试了解如何设置 NavigationController。我不明白为什么这段代码同时适用于 pushViewController 和 presentModalViewController。我认为它必须是其中之一。

对于上下文,这是一个创建 UIImagePickerController 的 UIViewController。之后有两个视图控制器,第一个(EditPictureViewController)编辑图像本身,第二个编辑属性。相信我应该使用 presentModalViewController。

...还有一种方法可以不关闭模态视图控制器,这样我就可以在 EditPictureViewController 上有一个重拍图片按钮?

谢谢。

- (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]; }
4

2 回答 2

0

您拥有的设置不是“正常的完成方式。标准范例是在 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]; 

}

于 2013-02-13T18:43:41.290 回答
0

这会将 EditPictureViewController 推送到 NavigationController 的视图堆栈上。

[self.navController pushViewController:viewController animated:NO];

然后在这里展示 NavigationController:

[self presentModalViewController:self.navController animated:YES];

我的意思是,您所做的只是从视图控制器呈现模态视图,而该模态恰好是 NavigationController。

于 2013-02-13T17:55:33.027 回答