2014-03-26 26 views
1

我有一個按鈕可以延續到另一個View Controller。在shouldPerformSegueWithIdentifier我檢查標識符並在調用我自己的方法nextClicked後返回NO這個特定的按鈕。當我以編程方式執行segue時,我不會收到任何動畫

nextClicked我做一個HTTP請求,並檢查了一些東西,然後如果一切正常,我做

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self performSegueWithIdentifier:@"getstartednext" sender:self]; 
}); 

的問題是,我沒有得到任何動畫......現在的賽格瑞的類型爲模態的。如果我在shouldPerformSegueWithIdentifier中返回YES並且稍後以編程方式不返回segue,則會顯示動畫,並且所有內容都應該如此。

+1

這並沒有真正回答這個問題,但是:爲什麼不在第一次執行調用之前執行檢查,而是基本攔截第一個調度,然後再次調用它? – JoeFryer

+0

我在執行檢查之前檢查是否應執行檢查 – Johannes

回答

1

您錯用了shouldPerformSegueWithIdentifier。如果你想做點特別的事情來響應按鈕的點擊,使用action-target和而不是一個segue連接到按鈕。

+0

我想。我想要的是因爲你得到的動畫效果,以及它是多麼容易回到:) – Johannes

+0

我測試了從代碼中的另一個地方以編程方式執行segue。動畫似乎很好,然後... – Johannes

+1

閱讀我說的。我沒有說你不能以編程方式擁有segue。但是你正在自動和編程混合。別。 – matt

1

我用你的想法創建了一個新項目,我有動畫。

這是通過IB與下一個viewController和具有標識符連接的操作:IBAction@"getstartednext"

- (IBAction)go:(id)sender 
{ 

} 

相同的代碼你有除了發送者nil

- (void) nextClicked 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self performSegueWithIdentifier:@"getstartednext" sender:nil]; 
    }); 
} 

if發件人=零,(! go:)然後我打電話nextClicked因爲返回NO
else代碼做SEGUE因爲返回YES

- (BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 
{ 
    if ([identifier isEqualToString:@"getstartednext"] && sender != nil) 
    { 
     [self nextClicked]; 
     return NO; 
    } 

    return YES; 
} 

就像一個魅力。

相關問題