Ios UIImagePickerController作为应用程序的主视图控制器和导航控制器,如下所示
我的目标是创建一个应用程序,该应用程序将摄像头作为第一个视图显示,然后在拍照后转到导航控制器中的一系列视图。与我想要制作的最接近的现有应用程序是Snapchat 我已经为此挣扎了好几天,以下是我尝试过的(这些似乎都不起作用)Ios UIImagePickerController作为应用程序的主视图控制器和导航控制器,如下所示,ios,uinavigationcontroller,uiimagepickercontroller,Ios,Uinavigationcontroller,Uiimagepickercontroller,我的目标是创建一个应用程序,该应用程序将摄像头作为第一个视图显示,然后在拍照后转到导航控制器中的一系列视图。与我想要制作的最接近的现有应用程序是Snapchat 我已经为此挣扎了好几天,以下是我尝试过的(这些似乎都不起作用) 根视图(导航控制器内部)显示模式UIImagePickerController,然后切换到下一个视图。[不segue] 与1相同,但关闭模态控制器,然后继续。[有点有效。在加载UIImagePicker和转换到下一个视图时显示背景] 使用UIIMagePickerContr
// appDelegate.h
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) MainViewController *mainController;
//appDelegate.m
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.mainController = [[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
//each button clicked has following IBAction:
-(IBAction)button1Clicked:(id)sender
{
FirstViewController *firstVC = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:firstVC]autorelease];
[self presentModalViewController:navController animated:NO];
[addVC release];
}
//in FirstViewController.m
-(void)viewDidLoad
{
[super viewDidLoad];
self.title = @"xxxx ";
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self action:@selector(cancel_Clicked:)]autorelease];
}
-(void) cancel_Clicked:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}
注:
要将ViewController嵌入导航控制器中,必须使用以下代码
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:firstVC]autorelease];
如果您从导航控制器的根视图控制器以无动画的方式呈现图像选择器,则选择器是您将首先看到的。当您关闭它时,您将看到该根控制器,它应该是您希望在选择器离开时首先看到的。这是您想要的吗?此代码将位于根控件中勒:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
static int first = 1;
if (first) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = 0;
[self presentViewController:picker animated:NO completion:nil];
first = 0;
}
}
实际上我现在就这么做了,但是在模态弹出之前我看到了背景视图控制器。另外,在取消模态之后,在切换到下一个推送视图之前,我再次看到背景视图控制器。(我想我可以让背景视图控制器成为下一个要推送的控制器,但这仍然不能解决第一个问题。)@NV,我不知道你为什么会看到——我没有。你的动画设置为否?我甚至看不到根控制器视图的闪烁。