【问题标题】:Constant UIBarButtonItem in UINavigationControllerUINavigationController 中的常量 UIBarButtonItem
【发布时间】:2012-11-21 02:22:49
【问题描述】:

有什么方法可以让我拥有一个UINavigationController 并让它无论被推送多少次都始终显示相同的UIBarButtonItem

【问题讨论】:

    标签: ios uinavigationcontroller uibarbuttonitem


    【解决方案1】:

    试试这个-

    1. 创建UINavigationController 的子类(CustomNavigationController) 并使用它来推送您的视图控制器。
    2. CustomNavigationController 中,在initviewDidLoad 中创建UIBarButtonItem。将targetaction 添加到其中。
    3. CustomNavigationController 中实现UINavigationControllerDelegate 委托,并将barButtonYouCreated 设置为委托方法中每个视图控制器的右栏或左栏按钮项。

    使用

    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
         viewController.navigationItem.leftBarButtonItem = barButtonYouCreated;
    }
    

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    

    【讨论】:

      【解决方案2】:

      您可以在UINavigationController 中创建一个包含您的推送控制器的全局UITabBarController,然后将您的推送控制器navigationbar 隐藏

      【讨论】:

        【解决方案3】:

        或者尝试使用 UINavigationController 类别,并自定义 back item,这样无论推送多少次,都只需为 navigationController 的 back item 设置相同的视图。 比如:

        @implementation UIViewController (CustomNavigation)
        
        - (void)setLeftBarButtonItem:(UIButton*)leftview
        {    
            UIBarButtonItem *customItem = [[[UIBarButtonItem alloc] initWithCustomView:leftview] autorelease];
            self.navigationItem.leftBarButtonItem = customItem; 
            [(UIButton*)self.navigationItem.leftBarButtonItem.customView addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
        }
        

        【讨论】:

          【解决方案4】:

          您可以使用UINavigationControllerDelegate,如下:

          - (void)navigationController:(UINavigationController *)navigationController 
                willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
          

          在此委托方法中,您可以检查是否将 barButtonItem 添加到导航栏。

          【讨论】:

            猜你喜欢
            • 2011-08-15
            • 2012-01-15
            • 2012-04-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多