默认在 UISplitViewController 上显示 Master
Show Master on UISplitViewController by Default
当我为 Mac (v8.4.5) 创建一个带有 Visual Studio 的新 "Master Detail App" 时,UISplitViewController
的默认行为是显示 详细信息页面出现在纵向模式下的iPhone上时第一页。
我宁愿(我认为大多数人都愿意)默认显示 Master 页面。在我的例子中,母版页是一个 table 包含联系人列表的视图。
这个问题类似于:UISplitViewController in portrait on iPhone shows detail VC instead of master 但是 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();
}
}
设置PreferredDisplayMode
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();
}
}
}
当我为 Mac (v8.4.5) 创建一个带有 Visual Studio 的新 "Master Detail App" 时,UISplitViewController
的默认行为是显示 详细信息页面出现在纵向模式下的iPhone上时第一页。
我宁愿(我认为大多数人都愿意)默认显示 Master 页面。在我的例子中,母版页是一个 table 包含联系人列表的视图。
这个问题类似于:UISplitViewController in portrait on iPhone shows detail VC instead of master 但是 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();
}
}
设置PreferredDisplayMode
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();
}
}
}