Xamarin.ios 默认情况下,在UISplitViewController上显示主控
当我使用Visual Studio for Mac(v8.4.5)创建一个新的“主细节应用程序”时,Xamarin.ios 默认情况下,在UISplitViewController上显示主控,xamarin.ios,uisplitviewcontroller,Xamarin.ios,Uisplitviewcontroller,当我使用Visual Studio for Mac(v8.4.5)创建一个新的“主细节应用程序”时,UISplitViewController的默认行为是当细节页面以纵向模式出现在iPhone上时,首先显示细节页面 我宁愿(我想大多数人都愿意)默认显示母版页。在我的例子中,母版页是一个包含联系人列表的表视图 这个问题类似于:但是对于Xamarin.iOS 与此处建议的解决方案类似,我尝试分配一名代表但未成功: public class ContactsSplitViewControlle
UISplitViewController
的默认行为是当细节页面以纵向模式出现在iPhone上时,首先显示细节页面
我宁愿(我想大多数人都愿意)默认显示母版页。在我的例子中,母版页是一个包含联系人列表的表视图
这个问题类似于:但是对于Xamarin.iOS
与此处建议的解决方案类似,我尝试分配一名代表但未成功:
public class ContactsSplitViewControllerDelegate : UISplitViewControllerDelegate
{
public override bool EventShowViewController(UISplitViewController splitViewController, UIViewController vc, NSObject sender)
{
return true;
}
public override bool EventShowDetailViewController(UISplitViewController splitViewController, UIViewController vc, NSObject sender)
{
return true;
}
}
public partial class ContactsSplitViewController : UISplitViewController
{
public ContactsSplitViewController (IntPtr handle) : base (handle)
{
this.Delegate = new ContactsSplitViewControllerDelegate();
}
}
设置
首选显示模式
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.PreferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible;
}
经过一些实验,似乎在代理上覆盖
CollapseSecondViewController
会起作用,尽管我还不确定这是正确的解决方案
using Foundation;
using System;
using UIKit;
namespace MasterDetailTest
{
public class SplitViewControllerDelegate : UISplitViewControllerDelegate
{
public override bool CollapseSecondViewController(UISplitViewController splitViewController, UIViewController secondaryViewController, UIViewController primaryViewController)
{
return true;
}
}
public partial class MainPageSplitViewController : UISplitViewController
{
public MainPageSplitViewController (IntPtr handle) : base (handle)
{
this.Delegate = new SplitViewControllerDelegate();
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
// When implemented in my project, I found I needed to set this
// or the delegate would not be called.
this.SetNeedsFocusUpdate();
}
}
}
没有快乐。仍然提供详细页面。谢谢分享。别忘了接受答案。