2014-06-30 39 views
0

我有一個twitter共享視​​圖控制器,它在我的一個視圖控制器前面打開。我作出這樣的Twitter的看法:共享後執行Segue - Objective-C(Xcode)

if ([shareOption isEqual: @"Tweet"]) { 

     SLComposeViewController *tweetSheet = [SLComposeViewController 
               composeViewControllerForServiceType:SLServiceTypeTwitter]; 


     [tweetSheet setInitialText:combined]; 
     [tweetSheet addImage:capturedScreen]; 
     [self presentViewController:tweetSheet animated:YES completion:nil]; 

} 

我有這行代碼切換到我的下一個視圖控制器:

[self performSegueWithIdentifier: @"goBack" sender: self]; 

我怎麼能說這條線的用戶完成後啁啾?如果用戶決定取消他們的推文,我也希望執行此行。

編輯

if ([shareOption isEqual: @"Tweet"]) { 

     SLComposeViewController *tweetSheet = [SLComposeViewController 
               composeViewControllerForServiceType:SLServiceTypeTwitter]; 
     [tweetSheet setInitialText:combined]; 
     [tweetSheet addImage:capturedScreen]; 
     iJustShared = @"YES"; 
     [self presentViewController:tweetSheet animated:YES completion:nil]; 

    [tweetSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 

     [self performSegueWithIdentifier: @"goBack" sender: self]; 

    }]; 

} 
+2

你看看SLComposeViewController文檔?有一個名爲「處理結果」的部分和一個名爲「completionHandler」的屬性。 –

回答

2

你需要在你的鳴叫控制器行,如果你想要那個SEGUE回到以前的控制器,你需要做的dismissViewControllerAnimated:completion

但是,由於您使用的SLComposeViewcontroller,你是不是繼承它,你必須通過設置它的完成處理程序使用的處理程序:

[tweetSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 
    //actions! 
}]; 

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/SLComposeViewController/completionHandler

+0

好的。將您的建議應用於我的代碼。但是,按推文上的取消不會調用完成處理程序。思考? –

+0

你在處理程序中做了什麼? –

+0

我編輯了我的問題以包含我的更新代碼。 –