- 締切済み
TwitterKitで自動ツイートについて
現在、XcodeでFabricを使用したswift2プログラミングをやってiphoneアプリ作成をやっています。 iphoneアプリのプログラミングでtwitter機能のアプリ作成でこのFabricというフレームワークというのを利用すると結構簡単なプログラミングで作成することができるということを下のWEBサイトで知りました。 http://qiita.com/mokumoku/items/bf0460f420acac3c04fc 確かに、このサイトの通りで大体twitterのログインやツイートもテンプレ的にでき便利だと思ったのですが、幾つか動作的にわからないことがあります。 例えば、ViewControllerを2つ配置して、画面遷移できるようにしているのですが、 ViewController1------>ViewController2に遷移する時にその時にツイート画面を出すような関数コードを呼び出すように作ってみたのですが、その時はツイートできないという状態になります。 ですが、同じ関数コードをコマンドボタンの押しの時に呼び出すとその時はツイート画面が出ます。 ViewController2のプログラミング内容は次のようになっています。 override func viewDidLoad() { ----(中略)---------- tweet() } このtweet()でツイート画面が出るようにしているのですが、画面遷移でこの関数は呼び出されているのですが、デバッグの結果 composer.showFromViewController(self) {}この内部のコードにアクセスできていない状態になっています。 また、 @IBAction func tweetTest(sender: AnyObject) { tweet() } tweetTestボタンでtweet()を呼び出した場合は composer.showFromViewController(self) {}の内部のコードにアクセスしてツイート画面が出るようにアクセスしていることがわかりました。 なぜこのように違いがあるのかご教示頂きますよう、宜しくお願い致します また、画面遷移時にツイート画面を出すようなこともできるのかも教えていただけると幸いです。 import Foundation import UIKit //import UIKit import TwitterKit import Fabric class ViewController2: UIViewController { override func viewDidLoad() { //super.viewDidLoad() // Swift /* let logInButton = TWTRLogInButton(logInCompletion: { session, error in if (session != nil) { print("signed in as") } else { print("error: ") } }) logInButton.center = self.view.center self.view.addSubview(logInButton) */ tweet() } /* @IBAction func tweetTest(sender: AnyObject) { tweet() } */ @IBAction func tweetTest(sender: AnyObject) { tweet() } func tweet(){ // Swift let composer = TWTRComposer() composer.setText("just setting up my Fabric") composer.setImage(UIImage(named: "fabric")) // Called from a UIViewController composer.showFromViewController(self) { result in if (result == TWTRComposerResult.Cancelled) { print("Tweet composition cancelled") } else { print("Sending tweet!") } } } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Lchan0211b
- ベストアンサー率61% (573/930)
> なぜこのように違いがあるのかご教示頂きますよう、宜しくお願い致します > また、画面遷移時にツイート画面を出すようなこともできるのかも教えていただけると幸いです。 Fabricは使ったことないですが、 viewDidLoadのタイミングは遷移先画面生成中でまだ確定できてない状態なので、 そこでshowFromViewControllerを実行するのは早すぎるのだと思います。 viewDidAppearのタイミングで実行すればおそらくうまく表示できると思います。