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

时间:2015-08-11 07:35:41

标签: ios uitabbarcontroller uitabbar

在我的应用中,UITabBarController有3个TabBar。 TabBarControllerViewController调用,其中包含一个布尔变量。

我想将此值从UIViewController传递给UITabBarController(我假设在-prepareForSegue中),以便我可以在TabBarController的所有标签中获取此值。

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

2 个答案:

答案 0 :(得分:2)

解决问题的一种方法是使用代表。 您可以使用自己的类扩展UITabBarController并创建委托方法以与UIViewController进行通信。 与prepareForSegue方法相比,您可以使用此方法按需获取布尔值。

如果您之前从未使用过,请阅读有关协议和委派的详细信息:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

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

但是如果你想用Obj-C风格来做 - 委托就是你要走的路。

答案 1 :(得分:1)

您应该创建UITabbarController的子类并创建属性并对其进行合成,之后您可以访问相应控制器上的属性。

 
  @interface CustomTabController : UITabBarController

  @property(nonatomic,assign) BOOL isSelect;

  @end
  @implementation CustomTabController

  @synthesize isSelect;

  @end

完成此操作后,转到故事板并选择tabbarcontroller并将tabbarcontroller自定义类设置为' CustomTabController'

设置完成后,您只需要包含" CustomTabController.h"在你想要的viewcontroller文件,只需创建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