2011-12-27 42 views
2

我無法將數據發送到使用「prepareForSegue」方法的不同看法將數據傳遞給第二個觀點的問題...我有從一個UITableView

我有上人口與結果從sqlite的一個實現代碼如下查詢。當我點擊表格單元格時,它會引導我進入另一個視圖,其中有一個標籤,它會告訴我標識和名稱

我有一個NSString,它保存來自SQLite數據源的ID的值。我想將該ID傳遞給我的應用程序的第二個視圖,以便使用它從基於該ID的sqlite數據源獲取信息。

現在我已經編寫了代碼,它將信息從一個視圖傳遞到另一個視圖......但由於某種原因,信息「不計數」。這就是我的意思,我有一個3個山區的名單:欺騙,遠端和山。華盛頓(在第一個視圖中的桌面上列出)。當我點擊Mt.華盛頓,它會進入第二種觀點,我已經設置了標籤,告訴我所選單元格的名稱......。是空白的。我點擊導航欄上的按鈕,然後點擊Mt.華盛頓再次,這次標籤顯示「華盛頓山」的名字。現在當我回去點擊「遠端」時,標籤顯示「華盛頓山」。當我回去再次點擊「遠端」時,標籤變爲「遠端」。希望這是有道理的。

有沒有人知道如何解決這個問題? 這裏是我的代碼:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([[segue identifier] isEqualToString:@"areaIDpush"]){ 
     RockViewController *rockRoutes = [segue destinationViewController]; 
     rockRoutes.rockID = areaID_fk; 
     rockRoutes.rockName = areaName_fk; 
    } 
} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    areaID_fk = cell.detailTextLabel.text; 
    areaName_fk = cell.textLabel.text; 
} 

- (void)viewWillAppear:(BOOL)animated { 
[areaIDLabel setText:rockID]; 
[areaNameLabel setText:rockName]; 
[super viewWillAppear:animated]; 

}

希望這會幫助你看到我遇到了問題......任何形式的幫助將是巨大的。謝謝!

+0

areaID_fk = cell.detailTextLabel.text; //其錯誤 areaName_fk = cell.textLabel.text; //它的錯誤檢查下面我添加了一些代碼從數據庫分配.. – 2011-12-28 06:08:28

回答

2

將我的代碼發送給好友,他幫助我意識到發生了什麼問題。

下面是正確的代碼:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
     if([[segue identifier] isEqualToString:@"areaIDpush"]){ 
     RockViewController *rockRoutes = [segue destinationViewController]; 
     rockRoutes.rockID = areaID_fk; 
     rockRoutes.rockName = areaName_fk; 

     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.tableView.indexPathForSelectedRow]; 
     rockRoutes.rockName = cell.textLabel.text; 
     rockRoutes.rockID = cell.detailTextLabel.text; 
    } 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
} 
1

你要通過在didSelectRowAtIndexPath名稱和ID:方法....首先,你必須初始化兩個名稱和ID兩個變量在第二view.and從烏爾第一視圖傳遞值一樣

secondview.variable1=ID; 
secondview.variable2=name; 

您的didSelectRowAtIndexPath:方法。

+0

你正在使用一個不好的(或)重複的代碼....你必須通過urse值只在didselect method.so該模擬器可以理解傳遞的值,而用戶點擊一個單元格,並得到一個鏈接到第二個視圖的值 – 2011-12-27 04:43:30

+0

感謝您的回覆!有點困惑與答覆雖然... :)因此,在我的AreasViewContoller.m文件中,我有變量areaID_fk和areaName_fk初始化並分配與didSelectRowAtIndexPath方法中選定的值。 AreasViewController.m: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath]; areaID_fk = cell.detailTextLabel.text; areaName_fk = cell.textLabel.text;} – 2011-12-28 04:50:01

+0

我在哪裏添加:「secondview.variable1 = ID; secondview.variable2 = name;」你建議?在同樣的方法? – 2011-12-28 04:51:36

相關問題