我目前正在尝试使用. return *yytext;
来呈现视图控制器。我的问题是,当我的自定义转换委托调用
document.getElementById("yourElementId").click();
我的呈现控制器是$(selector).click();
,导致它抛出异常。我是从嵌入在导航控制器中的视图控制器中呈现它的,该控制器嵌入在标签栏控制器中。我试过从这些控制器中提出同样的问题。当没有自定义模式演示时它也能正常工作,但我的目标是自定义它。我选择一个按钮并在下面提供代码时调用它。 UIPresentationController
是我保留在类属性中的自定义转换委托。此外,func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?
被初始化为具有自定义模式演示,以便调用我的转换委托。
nil
我很想知道为什么这个问题是为了未来的知识而发生的。截至目前,由于此异常,我的子类mapTransitionDelegate
甚至没有被初始化。
答案 0 :(得分:0)
UIViewController的指定初始化程序(以及它的子类)是init(nibName:bundle:)
。但是,文档特别说:
这是此类的指定初始值设定项。使用时 故事板,用于定义视图控制器及其关联视图, 你永远不会直接初始化你的视图控制器类。代替, 视图控制器也由故事板实例化 在你的时候触发segue或以编程方式自动执行 app调用instantiateViewControllerWithIdentifier:方法 故事板对象。从a实例化视图控制器时 故事板,iOS通过调用它初始化新的视图控制器 initWithCoder:方法而不是此方法并设置nibName 存储在故事板内的nib文件的属性。
调用EnlargedMapViewController()
不是正确的方法,因为它绕过了Cocoa查找碎片所需的所有机制。您应该使用其指定的初始化程序从nib实例化它,或者至少通过将其nib文件名与其类名称匹配(即EnlargedMapViewController.xib
),因此调用EnlargedMapViewController(nibName: nil, bundle: nil)
(传递nil)将导致Cocoa按名称寻找匹配的笔尖。
但实际上,如果你在其他地方使用故事板,为什么不在这里呢?只需为其场景设置一个标识符并使用instantiateViewControllerWithIdentifier:
即可享受您自己保存的时间和恶化。