Twitter にテキストを投稿するためにアプリでシェアキットを使用しています。問題は、ユーザーがモーダル ビューで [Twitter に送信] ボタンをクリックしたときに、ルート ビュー コントローラー (メイン コントローラー) にポップする必要があることです。これを行うにはどうすればよいですか?
2 に答える
iOS 5以降を実行している場合は、ShareKitやiOS 6のソーシャルフレームワークではなく、TWTweetComposerを使用してツイートを送信できます。
ただし、sharekitを使用する場合は、modalViewのデリゲートが必要です。
プロトコルを作成する必要があります。モーダルビューヘッダーでは、次のようなものを使用します
@protocol TwitterModalDelegate
-(void)closeModal;
@end
次に、そのプロトコルに準拠するIDをプロパティまたはivar(通常はデリゲートと呼ばれます)として実装します
@property (nonatomic, assign) id<TwitterModalDelegate> delegate
次に、モーダルを表示しているView Controllerで、プロトコルを使用していることを伝えます。
@interface YourViewControllerName : UIViewController <TwitterModalDelegate>
モーダルビューヘッダーをViewControllerヘッダーにインポートする必要があります。
これで、モーダルビューが閉じたときに何が起こるかを制御できます。
-(void)closeModal
{
[self dismissViewControllerAnimated:YES completion:^
{
[self.navigationController popToRootViewControllerAnimated:YES ];
}];
}
したがって、モーダルビューで、ツイートが送信されたことを確認したら、電話をかけるだけです。
[self.delegate closeModal];
モーダルビューのインスタンスを作成するときは、次の点に注意してください。
YourModalView* modalView = [YourModalView alloc]init];
modalView.delegate = self
[self presentViewController:modalView animated:YES completion:nil];
シェアキット インスタンス デリゲートを現在のコントローラーに設定し、(void)sharerFinishedSending:(SHKSharer *)sharer; を実装します。これは、完了したリクエストを処理するシェアキットデリゲートメソッドです