将布尔值传递给 UITabController 中的所有选项卡

Pass a boolean to all tabs in a UITabController

在我的应用中,UITabBarController 有 3 个 TabBar。 TabBarController 是从 ViewController 调用的,其中有一个布尔变量。

我想将此值从 UIViewController 传递到 UITabBarController(我假设在 -prepareForSegue 中),以便我可以在 [=11= 的所有选项卡中获取此值].

如何传递此变量以及如何从每个 TabBar 访问?

解决它的一种方法是使用委托。 您可以使用自己的 class 扩展 UITabBarController 并创建委托方法来与 UIViewController 通信。 比在 prepareForSegue 方法中,您可以使用此方法按需获取布尔值。

如果您以前从未使用过它,这里有一本关于协议和委托的好书:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

另一个想法是再次扩展 UITabBarController 并向其添加 BOOL 属性 并从 UIViewController 开始每次更新它。最好的方法是在 UIViewController 中创建自定义 setter,根据 UITabBarController 中的 属性 进行更新。 在这种情况下,您可以在 UITabBar segue 中使用 self.boolproperty

但是如果你想以 Obj-C 风格来做 - 委托是可行的方法。

您应该子 class UITabbarController 并创建 属性 并合成它,之后您可以访问相应控制器上的 属性。

 
  @interface CustomTabController : UITabBarController

  @property(nonatomic,assign) BOOL isSelect;

  @end
  @implementation CustomTabController

  @synthesize isSelect;

  @end

完成此操作后,转到故事板和 select 您的 tabbarcontroller 并将 tabbarcontroller Custom class 设置为 'CustomTabController'

设置后你只需要在你的愿望viewcontroller中包含"CustomTabController.h"文件,然后创建一个tabbarcontroller对象并访问属性,属性是getter 和 setter 所以你也可以设置 属性 见下图。

    //import your 'CustomTabController.h'  and write below code where ever you want to get tabbar property.



      CustomTabController *controller = (CustomTabController *)self.tabBarController;

      BOOL selected = controller.isSelect;  //Gettting current value of isSelect
      controller.isSelect = NO; //Setting value for isSelect