2014-01-20 45 views
0

我具有由賽格瑞conected 2個ViewControllers,第一個是子查看,第二個是子Tabela從我的第一視圖控制器通過從該表中的選擇的行的值到我的第二個視圖控制器,所以我可以定義他的標題。 這是代碼。傳遞數據之間

SubView.m(我的第一個視圖控制器)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // _vinhoArray is the array that I populate the TableView 
    NSString *selectedRow = [_vinhoArray objectAtIndex:indexPath.row]; 
    // Sub Tabela is the name of Second View 
    SubTabela *subTabela = [[SubTabela alloc] init]; 
    // tituloTabela is a NSString in my Second View 
    subTabela.tituloTabela = linhaSelecionada; 

    // Here i get the Right value 
    NSLog(@"value %@", subTabela.tituloTabela); 

} 

SubTabela.h(我的第二個視圖控制器)

@property (nonatomic, strong) NSString *tituloTabela; 

SubTabela.m

@synthesize tituloTabela; 

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 

    self.title = tituloTabela; 

    // Here i get the a Null value 
    NSLog(@"value %@", tituloTabela); 

} 

請幫助!

+0

哪裏是用於打開屏幕的代碼?其非常重要,因爲我認爲我看到你的錯誤 –

+0

屏幕是由一個segue打開。 對不起,如果我不明白,我是非常新的發展。 –

+0

是的,我沒有你使用一個segue,但你沒有添加調用segue到你的問題的代碼 –

回答

1

我不認爲你正確地傳遞你的數據,它看起來好像你在didSelectRowAtIndexPath裏面創建一個對象,然後把數據傳遞給它,然後丟棄這個對象。你需要做的就是把這個:

[self performSegueWithIdentifier:<#(NSString *)#> sender:self]; 

改變畫面,然後通過這樣的數據是prepareForSegue回調

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    SubTabela *vc = (SubTabela *)segue.destinationViewController; 
    vc.tituloTabela = linhaSelecionada; 
} 
+0

但我不想傳遞didSelectRowAtIndexPath中的值? 我怎麼無法從選定的行中獲取值? –

+0

@DiegoRodrigues但你不傳遞'didSelectRowAtIndexPath'中的數據,你創建了一個名爲'subTabela'的變量,你設置了數據,然後你不再使用這個對象,所以它在任何地方都沒有被使用。然後,當您調用segue時,它會再次創建該viewController,而不會在第一個數據上設置數據。您需要在'didSelectRowAtIndexPath'方法之外創建一個變量,在'didSelectRowAtIndexPath'回調中調用segue並按照我所示的那樣傳遞數據。 –

+0

@DiegoRodrigues僅僅因爲你創建了'subTabela'並不意味着你對它做了任何事情都會影響你應用中的所有'subTabela'。你可以有許多相同的類,並使用上面的 –