将布尔值传递给 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
在我的应用中,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