在我的应用中,UITabBarController
有3个TabBar。 TabBarController
从ViewController
调用,其中包含一个布尔变量。
我想将此值从UIViewController
传递给UITabBarController
(我假设在-prepareForSegue
中),以便我可以在TabBarController
的所有标签中获取此值。
如何传递此变量以及如何从每个TabBar访问?
答案 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