11

所以我有一个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."];
    }
}

所以我的问题是..有人知道我怎么能解决这个问题吗?通过添加一个取消/后退按钮,我可以连接以使导航控制器切换回来,或者以另一种方式呈现这个(我想避免在两个 UIPopoverControllers 之间切换,但我不知道我还能做什么......

谢谢

利亚姆

4

1 回答 1

11

啊..稍事休息后,我发现了这个:https ://discussions.apple.com/thread/1710435?start=0&tstart=0

使用 UINavigationControllerDelegate 您可以使用该navigationController:willShowViewController:animated:方法访问导航栏。然后使用一些代码(如下)您可以添加一个按钮。

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 

}
于 2012-05-05T15:17:05.770 回答