覆盖单独的SecondaryViewControllerForSplitViewController:用于单点触控中的特定UIViewController
Posted
技术标签:
【中文标题】覆盖单独的SecondaryViewControllerForSplitViewController:用于单点触控中的特定UIViewController【英文标题】:Override separateSecondaryViewControllerForSplitViewController: for specific UIViewController in monotouch 【发布时间】:2015-02-11 20:28:40 【问题描述】:我正在尝试根据 Apple doc Discussion 覆盖单独的SecondaryViewControllerForSplitViewController 上的默认 UINavigationController 行为
默认情况下,大多数视图控制器什么都不做,但 UINavigationController 类通过从其导航堆栈顶部弹出并返回视图控制器来响应。
我的目标是:
-
从 UISplitViewControllerDelegate.SeparateSecondaryViewController 返回 null
也覆盖用作主视图控制器的默认 UINavigationController
=> 导致没有辅助视图控制器(因为当拆分视图控制器未折叠时,没有显示模式只能获取主视图控制器...)
但是我在 VS 的 IntelliSense 中甚至在通过反射浏览程序集时都找不到任何覆盖点,除了从选择器调用方法的扩展方法。
我可以在这一点上覆盖默认的 UINavigationController 行为吗? 如果是,是 Xamarin API 中的错误吗? 或者 Xamarin 是否期望我们必须手动导出选择器?
也许是这样的:
[Export("separateSecondaryViewControllerForSplitViewController:")]
public UIViewController SeparateSecondaryViewController(UISplitViewController splitViewController)
注意:我将 Xamarin 用于 VS 3.8.151.0 | Xamarin.ios 8.4.0.0 ... 自统一 API 发布以来的已知问题列表仍然有点担心 :)
【问题讨论】:
【参考方案1】:在 Xamarin.iOS 的 UIViewController
中似乎没有正确绑定此方法。
是UIKit.UISplitViewController_UIViewController
上的扩展方法,定义为:
[Export ("separateSecondaryViewControllerForSplitViewController:"), Availability (Introduced = Platform.iOS_8_0), CompilerGenerated]
public static UIViewController SeparateSecondaryViewControllerForSplitViewController (this UIViewController This, UISplitViewController splitViewController);
您应该能够像这样将该方法放入您的视图控制器子类中:
[Export ("separateSecondaryViewControllerForSplitViewController:")]
public UIViewController SeparateSecondaryViewControllerForSplitViewController (UISplitViewController splitViewController)
return null; // return whatever you need to return
手动导出它应该可以解决问题。让我知道它是否有效。
【讨论】:
separateSecondaryViewControllerForSplitViewController:
由UIViewController
定义,因此由UINavigationController
继承(和覆盖)
嗯...看这个;也许有帮助;对我来说,看起来你是对的,并且这些方法没有出现在 Xamarin.iOS 中:iosapi.xamarin.com/…
我尝试自己定义导出并且效果很好(我的意思是我的实现被调用)......但是我无法以这种方式实现我的目标(当我的 UISplitViewController 没有辅助视图控制器因特征改变而分开)。我已经放弃了这一点,因为 Apple 实现似乎并没有真正期望它,我不想仅仅为此子类 UISplitViewController,我只想要一个委托。将您的回复标记为已回答,因为它解决了我的第一个问题,感谢您的帮助:)以上是关于覆盖单独的SecondaryViewControllerForSplitViewController:用于单点触控中的特定UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中检测不活动(无用户交互)以显示单独的屏幕,如覆盖
如何通过 Angular、Karma 和 Webpack 的单独文件拆分代码覆盖率?
覆盖单独的SecondaryViewControllerForSplitViewController:用于单点触控中的特定UIViewController