2014-11-16 29 views
0

我有兩個視圖控制器「SortViewController」和「CatalogeViewController」。 我有「SortViewController」6按鈕連接到push segue到「CatalogeViewController」 我怎麼知道用戶從哪個按鈕來的? 我爲segue設置了一個標識符,並且我已經考慮準備segue並在用戶按下按鈕時檢查它是否爲「CatalogeViewController」上的相同字符串時向「CatalogeViewController」發送字符串變量。 還有另一種方法可以做到這一點? 請有人可以解釋我如何根據我的問題做字符串變量的segue preapre。 謝謝檢測從先前的視圖控制器點擊哪個按鈕

回答

2

Bouabane的回答會工作,但它需要爲每個按鈕創建一個不同的階段,這是最初的工作,更難以維護,並且會讓您的故事板上有很多連接。

由於所有的按鈕鏈接到相同的目的地,我會做不同的。

通過控制 - 從您的第一個VC(ViewController)拖動到您的第二個VC手動創建一個segue。給它一個獨特的標識符,如「ButtonSegue」

然後爲所有按鈕創建一個IBAction。將所有按鈕鏈接到相同的操作。

給每個按鈕一個唯一的標籤號碼。使用連續的數字範圍(例如101,102 ... 106)。

在您的IBAction方法中,將按鈕的標記號保存到實例變量中。

在您的prepareForSegue中,將標記號實例變量傳遞給目標VC。 (匹配數字的代碼比匹配字符串的代碼更快更簡單,數字可以使用switch語句)

爲了使代碼更清晰並更易於閱讀,我將定義一個typedef'd枚舉使用可能的標籤值,然後使您的源視圖控制器的標籤編號實例變量和您的目標視圖控制器的標籤編號屬性使用該類型。

0

你應該使用這種方法。

- (空)prepareForSegue:(UIStoryboardSegue *)賽格瑞發件人:(ID)發送

這是一個例子,你如何完成你的需要:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

CatalogeViewController *catalogeViewController = segue.destinationViewController;; 
if([segue.identifier isEqualToString:@"firtsSegue"]) 
{ 
    catalogeViewController.selectedButton = @"firstButton"; 
}else if([segue.identifier isEqualToString:@"secondSegue"]){ 
    catalogeViewController.selectedButton = @"secondButton"; 
}else 
. 
. 
. 
} 
相關問題