I phoneアプリ入門 第5回

553 views

Published on

iPhone勉強会で使用した資料をシェアします。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
553
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

I phoneアプリ入門 第5回

  1. 1. 第5回 iPhone勉強会 113年4月14日日曜日
  2. 2. 今後の予定 ・第6回 ユーザ操作(タップなど)の検出方法 現在地の取得方法 ・第7回 MapKitを使った地図の表示方法 ブラウザでGoogleMapを表示する 213年4月14日日曜日
  3. 3. 今日のアジェンダ ・質問への回答 ・前回の復習 ・テーブルビューの続き 詳細の表示  テーブルビューの編集(できれば) 313年4月14日日曜日
  4. 4. 質問 1:効果音を鳴らしたい 2:@propertyをつける理由が不明 413年4月14日日曜日
  5. 5. 質問1への回答 音を鳴らす方法はいくつかあります ここではAudioToolBoxをつかいます。 513年4月14日日曜日
  6. 6. 効果音を鳴らす ライブラリと音ファイルを追加 613年4月14日日曜日
  7. 7. ソースコードはこんな感じ //プロジェクトに追加したtap.aifというファイルを探す NSURL *tapSound = [[NSBundle mainBundle] URLForResource: @"tap" withExtension: @"aif"]; //下のレイヤが理解できるようにキャスト CFURLRef soundFileURLRef = (__bridge CFURLRef)tapSound; //soundIDを登録する SystemSoundID soundFileObject; AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject); //soundIDに登録した音を鳴らす AudioServicesPlaySystemSound(soundFileObject); 713年4月14日日曜日
  8. 8. 質問2への回答 @propertyのことを宣言プロパティとい います。 宣言プロパティと変数について 解説します。 813年4月14日日曜日
  9. 9. Javaの世界では? 青い文字の変数はどこからアクセスできますか? public Class Test{ public String public_str; private String private_str; public void publicProcess(){ String local; } } 913年4月14日日曜日
  10. 10. Objective-Cでは? 青い文字の変数はどこからアクセスできますか? #Member.h @interface Member:NSObject{ NSString *name;    } これだけだとヘッダ以外から #Member.m アクセスできない @implemention: Member - (void)execute{ NSString *local_name; } 1013年4月14日日曜日
  11. 11. サンプルプログラム Member.h/Member.m →setter/getterを自分で用意 MemberSecond.h/MemberSecond.m →setter/getterをコンパイラが作る MemberThird.h/MemberThird.m →setter/getterをコンパイラが作る 1113年4月14日日曜日
  12. 12. 1.自分でSetter/Getterを作る Member.hで変数およびsetter/getterを宣言 @interface Member : NSObject{ NSString *name; //名前 int number; //番号 numberのsetter/getterは } どうなっている? -(NSString *)name; -(void)setName:(NSString *)aName; Member.mでsetter/getterを実装 -(NSString *)name{ return name; } -(void)setName:(NSString *)aName{ name = aName; } 1213年4月14日日曜日
  13. 13. 1.自分でSetter/Getterを作る Member型のオブジェクトにアクセス //Member型のオブジェクトを作成  Member *member = [[Member alloc]init]; //setterを使ってアクセス [member setName:@"Kajishima"]; [member setNumber:1];  //この形式でもOK(この形式はコンパイラが作ってくれる) member.name = @"Kajishima"; member.number = 1; 1313年4月14日日曜日
  14. 14. 2.コンパイラに任せる MemberSecond.hで変数を宣言 @interface MemberSecond : NSObject{ NSString *name; //名前 ヘッダで宣言した変数の int number; //番号 setter/getterを@propertyと } @synthesizeで宣言 @property(nonatomic,strong) NSString* name; @property(nonatomic) int number; MemberSecond.mで@synthesize宣言 @synthesize name; 変数のnameとプロパティの @synthesize number; nameを別にすることもできる 1413年4月14日日曜日
  15. 15. 3.コンパイラに任せる MemberThird.hで変数を宣言 @interface MemberThird :NSObject @property(nonatomic,strong) NSString* name; @property(nonatomic) int number; MemberThird.mで変数にアクセスできるか確認 name = @ Kajishima ; これだとコンパイルエラーになる number = 0; _name = @ Kajishima ; _number = 0; これだとOK 1513年4月14日日曜日
  16. 16. つまり@propretyは・・・ setter/getterを作るために必要 1613年4月14日日曜日
  17. 17. 前回の復習 このようなテーブルを表示 するアプリを作りましょう 1713年4月14日日曜日
  18. 18. 前回の復習 その2 このようにテキストフィー ルドに値を入力するアプリ を作ってください 1813年4月14日日曜日
  19. 19. TableViewの仕組み 1913年4月14日日曜日
  20. 20. 実装するメソッド(復習) numberOfSectionsInTableViewメソッド →Sectionがいくつあるか numberOfRowsInSectionメソッド →指定したSectionに何行あるか cellForRowAtIndexPathメソッド →指定したSection/行に該当するセル 2013年4月14日日曜日
  21. 21. TableViewの表示フロー セクションの数は? セクションの中に何行ある? これから指定する位置のセル をください 2113年4月14日日曜日
  22. 22. テーブルのセルを選択する ここではStoryBoardとprepareForSegueを使 って詳細画面の設定を行います。 StoryBoardにViewControllerを追加して、 cellと接続しましょう。 2213年4月14日日曜日
  23. 23. テーブルのセルを選択する -(void)prepareForSegue:(UIStoryboardSegue *)segue sender: (id)sender { MemberDetailViewController *nextController = (MemberDetailViewController*)segue.destinationViewController; //選択しているのが何行めかをセットする NSIndexPath *selectedIndexPath = self.tableView.indexPathForSelectedRow; nextController.selectedIndex = selectedIndexPath.row; } 次に表示するViewControllerへ何行目か教えてあげる 2313年4月14日日曜日
  24. 24. 選択された先では・・・ -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //TextFieldの値を設定 self.textField.text = [[MemberManager sharedInstance].members objectAtIndex:self.selectedIndex]; } Viewを表示するときにArray の情報を取得する 2413年4月14日日曜日
  25. 25. セルの中身を編集 こんな風にテキストフィール ドで編集できるようにしてみ ましょう さらに、Arrayの情報も書き 換えます。 2513年4月14日日曜日
  26. 26. Arrayの情報を書き換える -(BOOL)textFieldShouldReturn:(UITextField *)textField{ //キーパッドを消す [textField resignFirstResponder]; //シングルトンで持っている値を変更 [[MemberManager sharedInstance].members replaceObjectAtIndex:self.selectedIndex withObject:textField.text]; return NO; } replaceObjectAtIndexで値 を変更 2613年4月14日日曜日
  27. 27. セルをカスタマイズ UITableViewCellのサブクラスを作ると カスタマイズ可能 LabelとImageを表示してみましょう。 MemberCellという名前で UITextViewCellのサブクラスを作成 します。 2713年4月14日日曜日
  28. 28. セルをカスタマイズ MemberCellというカスタマイズクラスを設定 LabelとImageを設定 2813年4月14日日曜日
  29. 29. こんな風に動いたでしょうか 2913年4月14日日曜日
  30. 30. データの中身を変えたら・・・ reloadDataメソッドを使い、 テーブルの内容を更新する -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //Tableの中身を更新 [self.tableView reloadData]; } 3013年4月14日日曜日
  31. 31. ご清聴ありがとうございました 3113年4月14日日曜日

×