2013-05-02 56 views
0

我需要將NSString從一個視圖傳遞到另一個視圖。我做我的first view controller通過NSString始終爲空

-(IBAction)btnCreate_click:(id)sender 
{ 
    CreateMatchTableViewController *matcObj = [[CreateMatchTableViewController alloc]init]; 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 

CreateMatchTableViewController是我的第二個視圖控制器和第二視圖控制器createBtnPressed IA NSString對象。

在第二視圖控制器viewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // MatchListViewController *obj = [[MatchListViewController alloc]init]; 

    NSString *stringFromFirstView = createBtnPressed; 

    NSLog(@"check===>%@",stringFromFirstView);//...always null 
} 

請幫助!

+0

爲什麼你想到的是,如果你創建btnCreate_click對象的實例和值分配給它,然後讓對象超出範圍(並被銷燬),這個值會在別處神祕地實現嗎? – 2013-05-02 10:56:59

回答

1

似乎在您的第一個視圖控制器中,您正在創建CreateMatchTableViewController的新實例。你不想因爲你已經在標籤欄控制器的CreateMatchTableViewController實例...

嘗試是這樣的:

-(IBAction)btnCreate_click:(id)sender 
{ 
    CreateMatchTableViewController *matcObj = [self.tabBarController.viewControllers objectAtIndex:1]; 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 

編輯

-(IBAction)btnCreate_click:(id)sender 
{ 
    UINavigationController *navigationController = [self.tabBarController.viewControllers objectAtIndex:1]; 

    CreateMatchTableViewController *matcObj = [[navigationController viewControllers] objectAtIndex:0];// I put 0 assuming you have a CreateMatchTableViewController as the navigation controller's root view controller 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 
+0

它給予異常....終止應用程序,由於未捕獲的異常'NSInvalidArgumentException',原因:' - [UINavigationController setCreateBtnPressed:]:無法識別的選擇器發送到實例 – user2268539 2013-05-02 09:31:19

+0

如果你有一個導航控制器在該選項卡中,你必須訪問在你的導航控制器中查看控制器,看我的編輯。 – e1985 2013-05-02 10:31:24

-1

嘗試

NSString* a = [[NSString alloc] initWithString:createBtnPressed]; 
+0

它給予異常...終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:'*** - [NSPlaceholderString initWithString:]:nil參數' – user2268539 2013-05-02 09:35:13

+0

是createBtnPressed屬性合成? – epalleva 2013-05-02 10:05:00

+0

是............ – user2268539 2013-05-02 10:59:14

0

在CreateMatchTableViewController上寫下如下方法:

(void)setStringFromFirstViewController:(NSString*)str{ 
    NSString *stringFromFirstView = str; 
    NSLog(@"check===>%@",stringFromFirstView); 
} 

現在的「第一個視圖控制器」執行以下操作:

-(IBAction)btnCreate_click:(id)sender{ 
    CreateMatchTableViewController *matcObj = [[CreateMatchTableViewController alloc]init]; 
    [matcObj setStringFromFirstViewController: @"pressed"]; 
    [self.tabBarController setSelectedIndex:1]; 

}