我需要将 theFirstViewController(第一个选项卡)的特定实例变量(一个对象)返回到 theSecondViewController(第二个选项卡),所以我没有使用 segue。
在选项卡之间传递数据的最佳实践是什么?我进行了广泛的搜索,但没有找到明确的答案。我已经尝试了我认为几乎所有选项,除了使用单例。为此目的使用单例是否可以接受?无论如何,我都需要存档数据。提前致谢。
我需要将 theFirstViewController(第一个选项卡)的特定实例变量(一个对象)返回到 theSecondViewController(第二个选项卡),所以我没有使用 segue。
在选项卡之间传递数据的最佳实践是什么?我进行了广泛的搜索,但没有找到明确的答案。我已经尝试了我认为几乎所有选项,除了使用单例。为此目的使用单例是否可以接受?无论如何,我都需要存档数据。提前致谢。
您的一种选择是将您的 ViewControllers 声明为您的应用程序委托的实例变量
向您的视图控制器类添加一个属性 say(A and B) 。
假设您想在视图控制器之间传递对象,您可以为每个控制器添加一个属性:
@interface AViewController : UIViewController {
BViewController *b;
}
@property (nonatomic, retain) BViewController *b;;
@end
@interface BViewController : UIViewController {
AViewController *a;
}
@property (nonatomic, retain) AViewController *a;
@end
当您初始化视图控制器时,您可以将此属性设置为先前初始化的对象上下文。
您提到了一个标签栏控制器。如果您的视图控制器通过 IB 连接,您只需在应用程序委托 applicationDidFinishLaunching: 方法中设置这些参数,然后显示标签栏控制器:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
AViewController *aViewController;
BViewController *bViewController;
...
}
@property (retain) IBOutlet AViewController *aViewController;
@property (retain) IBOutlet BViewController *aViewController;
@end
@implementation MyAppDelegate
...
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
...
aViewController.b = bViewController;
bViewController.a = aViewController;
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
创建可以使用的 viewControllers 对象
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
ViewController* viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];