【问题标题】:Xamarin iOS Back To Master Button Is not shown on detail viewXamarin iOS 返回主按钮未显示在详细视图中
【发布时间】:2018-08-22 00:07:03
【问题描述】:

简而言之,我有一个 SplitViewController 作为 RootController。 在构造函数中,我添加了主控制器和详细控制器。 Detail Controller 被封装到 Navigation Controller 中。

        {
        _masterViewController = new MenuViewController();
        _inventories = new InventoriesViewController();

        _detailNavigationController = new UINavigationController(_inventories);

        ViewControllers = new UIViewController[] {
            _masterViewController,
            _detailNavigationController
        };

我可以通过哪些方式在详细信息导航栏上显示菜单(显示主)后退按钮?

我们不使用故事板

【问题讨论】:

    标签: ios xamarin xamarin.ios


    【解决方案1】:

    在方法ViewDidLoad()中添加如下代码

            UIButton backButton = new UIButton();
            backButton.Frame = new CGRect(0,0,20,20);
            backButton.SetTitle("Back", UIControlState.Normal);
            backButton.SetTitleColor(UIColor.Gray, UIControlState.Normal);
            backButton.SetImage(new UIImage("back"), UIControlState.Normal);
            //backButton.SetImage(new UIImage("001.jpg"), UIControlState.Normal);
            backButton.TouchUpInside += (sender, e) =>
            {
    
                NavigationController.PopViewController(true);
            };
            UIBarButtonItem backItem = new UIBarButtonItem(backButton);
    
            NavigationItem.LeftBarButtonItem = backItem;
    

    【讨论】:

    • 我假设它应该转到封装在 NavigationController 中的细节控制器。但是Pop没有什么。并且按钮被禁用。
    • SplitViewController 有一个属性 DisplayModeButtonItem。在 _inventories = new InventoriesViewController(); 之后的 SplitViewController; _detailNavigationController = 新 UINavigationController(_inventories);我插入了 _inventories.NavigationItem.LeftBarButtonItem = DisplayModeButtonItem;它向我显示了行为不端的后退按钮
    【解决方案2】:

    一段时间后,我在 UISplitViewController 上找到了该属性

    DisplayModeButtonItem
    

    因此,在创建主控制器和详细控制器后(详细控制器被包装到 UINavigationController),我将 DisplayModeButtonItem 添加到详细控制器的 NavigationBar LeftItem 中。它给了我想要的外观和行为

    {
            _masterViewController = new MenuViewController();
    
            _inventories = new InventoriesViewController();
            _inventoriesNavigation = new UINavigationController(_inventories);
    
            _inventories.NavigationItem.LeftBarButtonItem = DisplayModeButtonItem;
    
            ViewControllers = new UIViewController[] {
                _masterViewController,
                _inventoriesNavigation
            };
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多