3

我有一个 iPad 应用程序(XCode 4.6、iOS 6.2、Storyboards、ARC),我在其中创建了一个 UIViewController(未连接到任何 segue)以在 UIPopover 中使用。这些是 ViewController 设置:

在此处输入图像描述

在此处输入图像描述

我有这段代码应该从 UIPopover 中显示“viewForPopover”ViewController。

        UIView *anchor = textField;
    UIViewController *viewControllerForPopover =
    [self.storyboard instantiateViewControllerWithIdentifier:@"viewForPopover"];

    popover = [[UIPopoverController alloc]
               initWithContentViewController:viewControllerForPopover];
    [popover presentPopoverFromRect:anchor.frame
                             inView:anchor.superview
           permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

我的问题是:没有self.storyboard。那么我应该如何到达当前类之外的视图控制器呢?(当前类是 UIView 的子视图)

4

2 回答 2

8

在 UIStoryboard 上调用此方法:

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil

如果您的视图控制器位于“MainStoryboard.storyboard”中,可能会这样:

UIViewController *viewControllerForPopover = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]instantiateViewControllerWithIdentifier:@"viewForPopover"];

于 2013-05-15T16:16:56.197 回答
0

swift的实用功能:

extension UIViewController {


    func presentMyCtl( pushed: Bool){

        let VC = MyController(nibName: "MyController", bundle: nil)

        if pushed{
            let nc = self.navigationController!
            nc.pushViewController(VC, animated: true)

        }else{
            self.present(VC, animated: true, completion: nil)
        }

    }


    func dismissMyCtl(pushed: Bool){

        if pushed{
            let nc = self.navigationController!
            nc.popViewController(animated: true)
        }else{
            self.dismiss(animated: true, completion: nil)
        }
    }
}

其中 MyController.swift 是类的 swift 文件,而 MyController.xib 是包含 UI 的文件。

于 2019-12-27T07:49:04.523 回答