所以我有一个UIPopoverController
我的UINavigationController
所在的地方UITableViewController
我UITableView
的一个选项就是去选择一张图片UIImagePickerController
...现在在iPhone上我可以简单地使用presentModalViewController:animated:
,但是在UIPopoverController中调用它会导致崩溃,这是不可能的......
我也知道UIImagePickerController
需要自己UINavigationController
所以我不能只推pushViewController:animated:
...
所以我想出如果我保留了我创建的UIPopoverController
的链接,那么我可以使用setContentViewController:animated:
切换到UIImagePickerController的viewController ......
但是,我现在仍然坚持让用户回到之前的UINavigationController
,因为我需要能够向UIImagePickerController
添加取消按钮,但是当我尝试做的时候这个取消按钮不会被添加......
继承我正在使用的代码
-(void)doPhotoalbums {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[imagePicker setContentSizeForViewInPopover:CGSizeMake(320, 480)];
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:nil];
[imagePicker.navigationItem setLeftBarButtonItem:cancel];
//[self presentModalViewController:imagePicker animated:YES];
[[self parentPopoverController] setContentViewController:imagePicker animated:YES];
} else {
[UIAlertView showMessage:@"This device does not have any photo albums."];
}
}
所以我的问题是..有谁知道如何解决这个问题?通过添加取消/返回按钮我可以挂钩以使navigationControllers切换回来或另一种方式来呈现这个(我想避免在两个UIPopoverControllers之间切换,但我不知道我还能做什么.. < / p>
由于
利安
答案 0 :(得分:11)
啊......经过一段时间的休息,我发现了这个:https://discussions.apple.com/thread/1710435?start=0&tstart=0
使用UINavigationControllerDelegate,您可以使用navigationController:willShowViewController:animated:
方法访问navigationBar ..然后使用一些代码(如下),您可以添加一个按钮。
if ([navigationController isKindOfClass:[UIImagePickerController class]]) {
UINavigationBar *bar = navigationController.navigationBar;
UINavigationItem *top = bar.topItem;
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)];
[top setLeftBarButtonItem:cancel];
} else {
//do non imagePickerController things
}