2013-05-06 18 views
0

我需要將FirstViewController(第一個選項卡)的特定實例變量(對象)返回給SecondViewController(第二個選項卡),所以我沒有使用segue。使用UITabBarControllers,在無法使用segue時傳遞數據的最佳方式是什麼?

什麼被認爲是在標籤之間傳遞數據的最佳做法?我已經廣泛搜索,沒有找到明確的答案。除了使用單例外,我已經嘗試了幾乎所有選項。爲此目的使用單身人士是否可以接受?無論如何,我將需要歸檔數據。提前感謝。你有

回答

0

一種選擇是,聲明你ViewControllers爲您的應用程序代理

的實例變量屬性添加到您的視圖控制器類說(A和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"]; 
相關問題