ios - Storyboard - 打开 UIViewController 作为 UIPopoverController

标签 ios iphone objective-c xcode uiviewcontroller

对于我的 iPad 版本的应用程序,我想通过单击按钮将 UIViewController 作为 UIPopoverController 打开。因此,打开 View Controller 的真正代码如下。我如何轻松地将此类代码转换为打开 UIViewController 作为 UIPopoverController

代码:

UIStoryboard *sb = [UIStoryboard storyboardWithName:[[NSBundle mainBundle].infoDictionary        objectForKey:@"UIMainStoryboardFile"] bundle:[NSBundle mainBundle]];

UIViewController *aboutView = [sb instantiateViewControllerWithIdentifier:@"AboutViewController"];
aboutView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:aboutView animated:YES completion:NULL];

最佳答案

使用类似的东西:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:aboutView];
    [poc presentPopoverFromRect:CGRectMake(somePoint.x, somePointY, 1.0, 1.0) inView:self.view permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES];
} else {
    aboutView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:aboutView animated:YES completion:NULL];
}

您还可以通过按钮显示弹出框,还可以控制弹出框的显示方向。如果您使用 UIPopoverArrowDirectionAny,iOS 会做出明智的决定,让弹出窗口可见。

您还应该保持对弹出框的强引用,并且仅在它为 nil 时显示它,以确保弹出框仅出现一次。这意味着如果弹出窗口被取消,则将保存它的属性设置为 nil

关于ios - Storyboard - 打开 UIViewController 作为 UIPopoverController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23849020/

相关文章:

javascript - 将 NSArray 发送到 javascript

ios - 检查有效的 vimeo url ios

带有CAGradientLayer的iPhone iOS自定义UIButton,如何使其指示触摸?

ios - 如何重新调整文字大小?

iphone - 当推送通知出现时,如果用户单击应用程序图标而不是单击通知来打开此应用程序

objective-c - BC时代的NSCalendar问题

objective-c - 强制 Product-Swift.h 更新

ios - 注册后向 PFUser 添加列?解析, swift

ios - .h 文件在静态库中的意义是什么?

iphone - StatusBar 全屏 View 关闭错误