絶対に挫折しないiPhoneアプリ開発入門Part.28 ~【iOS5】Twitterフレームワークを入れて投稿してみよう~

前回:絶対に挫折しないiPhoneアプリ開発入門Part.27 ~ひとつのUIViewControllerに複数のUIPickerView,UITextField~

今日はTwitterで投稿する機能を実装してみましょう。

動かしている様子は下の画像の通りです。


テキストフィールドがあって、文字を入力できる

Enterでテキストフィールドを閉じる

右上のボタンを押して、アクションシートを出現させる

ツイッターのつぶやき画面になり、テキストフィールドに入力した文字がデフォルトで入っている


実装は簡単です。順に説明します。

SingleViewApplicationからスタート

プロジェクトの名前は「TwitterSample」としました。

StoryboardでEmbed in、からのNavigationControllerへ変更

簡単NavigationControllerですね。今回はNavigationControllerを利用した画面遷移を利用しないのであれですが、いちおう書いてみたというところです。

結果こんな感じ。

UITextFieldの設置、Placeholder

UITextFieldを設置します。
また、薄い字で「つぶやきの内容」という文字をテキストフィールドの中に入れました。これはPlaceholderですね。

テキストフィールドをヘッダーファイルにひもづけ

名前はtweet_tvとしました。

Twitter.frameworkをいれましょう

入っていることを確認

コードを書きましょう

ViewController.h

#import <UIKit/UIKit.h>
#import "Twitter/Twitter.h" //←追加

@interface ViewController : UIViewController <UIActionSheetDelegate,UITextFieldDelegate> //ふたつデリゲート追加
@property (weak, nonatomic) IBOutlet UITextField *tweet_tv; //ひもづけしたやつ
@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize tweet_tv;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"つぶやこう"; //ナビゲーションバーのタイトル
    
	//右上に設置したこのボタンが押されると、appearActionSheetメソッドが実行されます。
    UIBarButtonItem *r_btn = [[UIBarButtonItem alloc]
                            initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                            target:self action:@selector(appearActionSheet)];
    self.navigationItem.rightBarButtonItem = r_btn;
    
    tweet_tv.delegate = self; //textFieldShouldReturnメソッドを使うためです。hファイルのデリゲートを忘れずに。
    
}

-(BOOL)textFieldShouldReturn:(UITextField*)textField{
    [tweet_tv resignFirstResponder]; //Enterを押したらフォーカスが外れる
    return YES;
}

- (void)appearActionSheet
{
    //hファイルでデリゲート
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"キャンセル" destructiveButtonTitle:nil otherButtonTitles:@"Twitterでつぶやく", nil];
    [actionSheet showInView:self.view];
    
}

//アクションシートのボタンが複数ある場合は、下記のようにbuttonIndexで条件分岐
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) {
        
        //TwitterはTwitter.framework インポートお忘れなく
        
        TWTweetComposeViewController *twv = [[TWTweetComposeViewController alloc] init];
        [twv setInitialText:tweet_tv.text]; //このtweet_tv.textを書くことで、デフォルト文字が入っている
        [self presentModalViewController:twv animated:YES];
        
        twv.completionHandler = ^(TWTweetComposeViewControllerResult res) {
            if (res == TWTweetComposeViewControllerResultDone) {
                NSLog(@"送りました");
            }else if( res == TWTweetComposeViewControllerResultCancelled) {
                NSLog(@"キャンセルされました");
            }
            [self dismissModalViewControllerAnimated:YES];
        };
    }
}

- (void)viewDidUnload
{
    [self setTweet_tv:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end


特に取り立てて解説という点も少ないかと思います。

コードの中に書いてあるコメントを読んでみてくださいね。


======================
当ブログ管理人のツイッターこちら
◎フォローしてくださると泣いて喜びます!ツイッター上で当ブログの質問などにもできるだけお答えしますし、役に立つiPhoneアプリ開発情報もつぶやきます。個人的なご依頼(たとえば、プログラミングの家庭教師、Skypeレッスンをしてくれないか、iPhoneアプリ開発の勉強会ってやってるの、とかですね)でもかまいません。
スカイプレッスンについて
開発をしているとその都度ぶつかる問題があると思いますが、検索で調べてもなかなかわからない、あるいは調べても非常に時間がかかる場合があると思います。開発者のみなさんもお忙しいと思いますので、私のレッスンを受けながら開発を進めていただけると、大幅にお時間を短縮できます。加えて、iPhoneアプリ開発の基礎、応用が身につき、今後の開発もスムーズに進められます

お問い合わせはツイッター、またはhiyoshimarukoアットマークgmail.comまでお願いします。(アットマークを@にしてください)お待ちしております!