覆盖 separateSecondaryViewControllerForSplitViewController: 对于单点触控中的特定 UIViewController

Override separateSecondaryViewControllerForSplitViewController: for specific UIViewController in monotouch

我正在尝试覆盖 separateSecondaryViewControllerForSplitViewController 上的默认 UINavigationController 行为:根据 Apple doc Discussion

Most view controllers do nothing by default but the UINavigationController class responds by popping and returning the view controller from the top of its navigation stack.

我的目标是:

  1. return 来自 UISplitViewControllerDelegate.SeparateSecondaryViewController
  2. 的空值
  3. 也覆盖用作主视图控制器的默认 UINavigationController
  4. => 导致没有辅助视图控制器(因为当拆分视图控制器未折叠时没有显示模式只能获取主视图控制器...)

但是我在 VS 的 IntelliSense 中找不到任何覆盖点,甚至在通过反射浏览程序集时也找不到,除了从选择器调用方法的扩展方法。

我可以在这一点上覆盖默认的 UINavigationController 行为吗?
如果是,是否是 Xamarin 中的错误 API?
或者 Xamarin 是否期望我们必须手动导出选择器?

也许是这样的: [Export("separateSecondaryViewControllerForSplitViewController:")] public UIViewController SeparateSecondaryViewController(UISplitViewController splitViewController)

注意:我正在为 VS 3.8.151.0 使用 Xamarin | Xamarin.iOS 8.4.0.0 ...自统一 API 发布以来的已知问题列表仍然有点担心 :)

在 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
}

手动导出应该可以解决问题。让我知道它是否有效。