您可以訪問已通過實現方法觸發自定義SEGUE觀。
在該方法上,如果使用Interface Builder將其鏈接,則發件人的值將是觸發segue的視圖。實現此方法時,建議您要查詢的賽格瑞已經通過以下方式被觸發:
if ([[segue identifier] isEqualToString:@"segueid"])
...其中「segueid」將是你所賜給在Interface Builder您SEGUE標識符。
關於第二個問題,我不知道在Interface Builder中爲segue指定參數的方法,但是您可以使用相同的「prepareForSegue」方法在運行時將它們從View Controller中傳遞。
想象一下,您的自定義賽格瑞有一個名爲animationStyle財產
如果執行方法,你可以有以下幾種:
- (void)perform
{
switch (self.animationStyle) {
case 0:
// TODO Perform animation type 0
case 1:
// TODO Perform animation type 1
}
}
然後,讓我們說你有幾個視圖控制器,你想使用該自定義賽格。在第一個可以實現performSegue方法,如:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) {
((YourCustomSegueClass *)segue).animationStyle = 0;
}
}
雖然在第二視圖控制器就可以實現它想:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) {
((YourCustomSegueClass *)segue).animationStyle = 1;
}
}
...那麼有效,要重複使用相同的自定義爲了得到不同的效果而使用segue類。 IB不會讓你直接配置segue,但據我所知,這是沒有辦法的。
這很好,當自定義segue特定於某個視圖控制器時,但它不允許我創建可重複使用的自定義segue,例如執行自定義動畫並從IB配置其參數。 – SoftMemes 2012-05-04 08:36:16
我不確定我是否理解你的問題。我知道我在故事板的不同點重複使用自定義的細節。我需要關注的唯一事情就是在每個要使用它的View Controller上實現「prepareForSegue」方法,然後將所需的參數分配給那裏的segue。當然,您可以通過不同的視圖控制器傳遞不同的參數來獲得所需的結果。 – flainez 2012-05-04 09:12:17