SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
第5回 iPhone勉強会




                    1
13年4月14日日曜日
今後の予定


      ・第6回 ユーザ操作(タップなど)の検出方法
           現在地の取得方法
      ・第7回 MapKitを使った地図の表示方法
           ブラウザでGoogleMapを表示する




                 2
13年4月14日日曜日
今日のアジェンダ

         ・質問への回答
         ・前回の復習
         ・テーブルビューの続き
          詳細の表示
          テーブルビューの編集(できれば)



                   3
13年4月14日日曜日
質問

     1:効果音を鳴らしたい


     2:@propertyをつける理由が不明




                4
13年4月14日日曜日
質問1への回答


          音を鳴らす方法はいくつかあります


          ここではAudioToolBoxをつかいます。




                    5
13年4月14日日曜日
効果音を鳴らす



                      ライブラリと音ファイルを追加




                  6
13年4月14日日曜日
ソースコードはこんな感じ

      //プロジェクトに追加したtap.aifというファイルを探す
      NSURL *tapSound = [[NSBundle mainBundle] URLForResource: @"tap"
                                                withExtension: @"aif"];
      //下のレイヤが理解できるようにキャスト
      CFURLRef soundFileURLRef = (__bridge CFURLRef)tapSound;

      //soundIDを登録する
     SystemSoundID soundFileObject;
      AudioServicesCreateSystemSoundID (soundFileURLRef,
                                        &soundFileObject);

      //soundIDに登録した音を鳴らす
      AudioServicesPlaySystemSound(soundFileObject);




                                      7
13年4月14日日曜日
質問2への回答

      @propertyのことを宣言プロパティとい
      います。


      宣言プロパティと変数について
      解説します。


                  8
13年4月14日日曜日
Javaの世界では?

    青い文字の変数はどこからアクセスできますか?
    public Class Test{
      public String public_str;
      private String private_str;


        public void publicProcess(){
          String local;
        }
    }

                                9
13年4月14日日曜日
Objective-Cでは?

     青い文字の変数はどこからアクセスできますか?
     #Member.h
     @interface Member:NSObject{
       NSString *name;   
     }                         これだけだとヘッダ以外から

     #Member.m                   アクセスできない


     @implemention: Member
     - (void)execute{
         NSString *local_name;
     }
                            10
13年4月14日日曜日
サンプルプログラム

       Member.h/Member.m
       →setter/getterを自分で用意


      MemberSecond.h/MemberSecond.m
      →setter/getterをコンパイラが作る


      MemberThird.h/MemberThird.m
      →setter/getterをコンパイラが作る


                        11
13年4月14日日曜日
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;
         }
                                            12
13年4月14日日曜日
1.自分でSetter/Getterを作る
       Member型のオブジェクトにアクセス

         //Member型のオブジェクトを作成
         Member *member = [[Member alloc]init];


              //setterを使ってアクセス
               [member setName:@"Kajishima"];
               [member setNumber:1];


         //この形式でもOK(この形式はコンパイラが作ってくれる)
          member.name = @"Kajishima";
          member.number = 1;




                                           13
13年4月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を別にすることもできる



                                       14
13年4月14日日曜日
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


                                       15
13年4月14日日曜日
つまり@propretyは・・・




  setter/getterを作るために必要




                      16
13年4月14日日曜日
前回の復習


                     このようなテーブルを表示
                     するアプリを作りましょう




                17
13年4月14日日曜日
前回の復習 その2




    このようにテキストフィー
    ルドに値を入力するアプリ
      を作ってください



                   18
13年4月14日日曜日
TableViewの仕組み




                     19
13年4月14日日曜日
実装するメソッド(復習)

         numberOfSectionsInTableViewメソッド
         →Sectionがいくつあるか

              numberOfRowsInSectionメソッド
              →指定したSectionに何行あるか

         cellForRowAtIndexPathメソッド
         →指定したSection/行に該当するセル



                           20
13年4月14日日曜日
TableViewの表示フロー

              セクションの数は?


       セクションの中に何行ある?


       これから指定する位置のセル
           をください



                          21
13年4月14日日曜日
テーブルのセルを選択する


    ここではStoryBoardとprepareForSegueを使
    って詳細画面の設定を行います。


    StoryBoardにViewControllerを追加して、
    cellと接続しましょう。




                       22
13年4月14日日曜日
テーブルのセルを選択する

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:
    (id)sender
    {
        MemberDetailViewController *nextController =
    (MemberDetailViewController*)segue.destinationViewController;

          //選択しているのが何行めかをセットする
        NSIndexPath *selectedIndexPath =
    self.tableView.indexPathForSelectedRow;

          nextController.selectedIndex    = selectedIndexPath.row;
    }



                         次に表示するViewControllerへ何行目か教えてあげる




                                     23
13年4月14日日曜日
選択された先では・・・

    -(void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];

          //TextFieldの値を設定
        self.textField.text = [[MemberManager
    sharedInstance].members objectAtIndex:self.selectedIndex];

    }

                             Viewを表示するときにArray
                                 の情報を取得する




                                  24
13年4月14日日曜日
セルの中身を編集

      こんな風にテキストフィール
      ドで編集できるようにしてみ
      ましょう


      さらに、Arrayの情報も書き
      換えます。




                    25
13年4月14日日曜日
Arrayの情報を書き換える

      -(BOOL)textFieldShouldReturn:(UITextField *)textField{
          //キーパッドを消す
              [textField resignFirstResponder];

              //シングルトンで持っている値を変更
          [[MemberManager sharedInstance].members
      replaceObjectAtIndex:self.selectedIndex
      withObject:textField.text];

              return NO;
      }                          replaceObjectAtIndexで値
                                          を変更



                                       26
13年4月14日日曜日
セルをカスタマイズ


    UITableViewCellのサブクラスを作ると
    カスタマイズ可能



    LabelとImageを表示してみましょう。


    MemberCellという名前で
    UITextViewCellのサブクラスを作成
    します。
                     27
13年4月14日日曜日
セルをカスタマイズ


                   MemberCellというカスタマイズクラスを設定




                 LabelとImageを設定




                   28
13年4月14日日曜日
こんな風に動いたでしょうか




                    29
13年4月14日日曜日
データの中身を変えたら・・・

              reloadDataメソッドを使い、
              テーブルの内容を更新する

         -(void)viewWillAppear:(BOOL)animated
         {
             [super viewWillAppear:animated];

               //Tableの中身を更新
               [self.tableView reloadData];
         }




                                      30
13年4月14日日曜日
ご清聴ありがとうございました




                    31
13年4月14日日曜日

Weitere ähnliche Inhalte

Was ist angesagt?

Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
Tetsuya Morimoto
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
pocketberserker
 

Was ist angesagt? (19)

Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
 
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張
 
NetBSD/i386 割り込みベクタテーブル
NetBSD/i386 割り込みベクタテーブルNetBSD/i386 割り込みベクタテーブル
NetBSD/i386 割り込みベクタテーブル
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
 
全探索
全探索全探索
全探索
 
カスタムオペレーションハンズオン
カスタムオペレーションハンズオンカスタムオペレーションハンズオン
カスタムオペレーションハンズオン
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Effective python#28
Effective python#28Effective python#28
Effective python#28
 
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 

Andere mochten auch

презентация Bp
презентация Bpпрезентация Bp
презентация Bp
alladvertising
 
第2弾d2064 lab.事前資料
第2弾d2064 lab.事前資料第2弾d2064 lab.事前資料
第2弾d2064 lab.事前資料
Hiroki Shimono
 
Catchingfirebr
CatchingfirebrCatchingfirebr
Catchingfirebr
Rochesspp
 
Network Vulnerability to Electromagnetic Pulse Attacks
Network Vulnerability to Electromagnetic Pulse AttacksNetwork Vulnerability to Electromagnetic Pulse Attacks
Network Vulnerability to Electromagnetic Pulse Attacks
Steve Goeringer
 
Харламов Production
Харламов ProductionХарламов Production
Харламов Production
alladvertising
 

Andere mochten auch (20)

Indices 13 May 2014
Indices 13 May 2014Indices 13 May 2014
Indices 13 May 2014
 
Promo Republic
Promo RepublicPromo Republic
Promo Republic
 
презентация Bp
презентация Bpпрезентация Bp
презентация Bp
 
Indices 26 oct2012052625
Indices 26 oct2012052625Indices 26 oct2012052625
Indices 26 oct2012052625
 
第2弾d2064 lab.事前資料
第2弾d2064 lab.事前資料第2弾d2064 lab.事前資料
第2弾d2064 lab.事前資料
 
Indices 09 nov2012061956
Indices 09 nov2012061956Indices 09 nov2012061956
Indices 09 nov2012061956
 
Catchingfirebr
CatchingfirebrCatchingfirebr
Catchingfirebr
 
Network Vulnerability to Electromagnetic Pulse Attacks
Network Vulnerability to Electromagnetic Pulse AttacksNetwork Vulnerability to Electromagnetic Pulse Attacks
Network Vulnerability to Electromagnetic Pulse Attacks
 
Flickr
FlickrFlickr
Flickr
 
Indices 05 nov2012052607
Indices 05 nov2012052607Indices 05 nov2012052607
Indices 05 nov2012052607
 
Indices 21 dec2012054235
Indices 21 dec2012054235Indices 21 dec2012054235
Indices 21 dec2012054235
 
Indices 30 jul2013051639
Indices 30 jul2013051639Indices 30 jul2013051639
Indices 30 jul2013051639
 
Case Study: Barney's Beanery Photo Contest
Case Study: Barney's Beanery Photo ContestCase Study: Barney's Beanery Photo Contest
Case Study: Barney's Beanery Photo Contest
 
Beginning iPhone Vol2
Beginning iPhone Vol2Beginning iPhone Vol2
Beginning iPhone Vol2
 
Indices 22 oct2012055901
Indices 22 oct2012055901Indices 22 oct2012055901
Indices 22 oct2012055901
 
ATG Title
ATG TitleATG Title
ATG Title
 
Харламов Production
Харламов ProductionХарламов Production
Харламов Production
 
Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0
 
Indices 18 dec2012060551
Indices 18 dec2012060551Indices 18 dec2012060551
Indices 18 dec2012060551
 
Finalaya daily wrap_15oct2013
Finalaya daily wrap_15oct2013Finalaya daily wrap_15oct2013
Finalaya daily wrap_15oct2013
 

Ähnlich wie I phoneアプリ入門 第5回

大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
Yuki Tanaka
 
Scala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidScala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in Android
Taisuke Oe
 
LT at JavaOne2012 JVM language BoF #jt12_b101
LT at JavaOne2012  JVM language BoF #jt12_b101LT at JavaOne2012  JVM language BoF #jt12_b101
LT at JavaOne2012 JVM language BoF #jt12_b101
Takeshi AKIMA
 

Ähnlich wie I phoneアプリ入門 第5回 (20)

大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
 
I phoneアプリ入門 第4回
I phoneアプリ入門 第4回I phoneアプリ入門 第4回
I phoneアプリ入門 第4回
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
Spockの基礎
Spockの基礎Spockの基礎
Spockの基礎
 
Ext Schedulerを使ってみる
Ext Schedulerを使ってみるExt Schedulerを使ってみる
Ext Schedulerを使ってみる
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/Prism
 
Unityで覚えるC#
Unityで覚えるC#Unityで覚えるC#
Unityで覚えるC#
 
Scala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidScala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in Android
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオン
 
機械学習とJubatus
機械学習とJubatus機械学習とJubatus
機械学習とJubatus
 
LT at JavaOne2012 JVM language BoF #jt12_b101
LT at JavaOne2012  JVM language BoF #jt12_b101LT at JavaOne2012  JVM language BoF #jt12_b101
LT at JavaOne2012 JVM language BoF #jt12_b101
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
Boost tour 1_44_0
Boost tour 1_44_0Boost tour 1_44_0
Boost tour 1_44_0
 

I phoneアプリ入門 第5回

  • 1. 第5回 iPhone勉強会 1 13年4月14日日曜日
  • 2. 今後の予定 ・第6回 ユーザ操作(タップなど)の検出方法 現在地の取得方法 ・第7回 MapKitを使った地図の表示方法 ブラウザでGoogleMapを表示する 2 13年4月14日日曜日
  • 3. 今日のアジェンダ ・質問への回答 ・前回の復習 ・テーブルビューの続き 詳細の表示  テーブルビューの編集(できれば) 3 13年4月14日日曜日
  • 4. 質問 1:効果音を鳴らしたい 2:@propertyをつける理由が不明 4 13年4月14日日曜日
  • 5. 質問1への回答 音を鳴らす方法はいくつかあります ここではAudioToolBoxをつかいます。 5 13年4月14日日曜日
  • 6. 効果音を鳴らす ライブラリと音ファイルを追加 6 13年4月14日日曜日
  • 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); 7 13年4月14日日曜日
  • 8. 質問2への回答 @propertyのことを宣言プロパティとい います。 宣言プロパティと変数について 解説します。 8 13年4月14日日曜日
  • 9. Javaの世界では? 青い文字の変数はどこからアクセスできますか? public Class Test{ public String public_str; private String private_str; public void publicProcess(){ String local; } } 9 13年4月14日日曜日
  • 10. Objective-Cでは? 青い文字の変数はどこからアクセスできますか? #Member.h @interface Member:NSObject{ NSString *name;    } これだけだとヘッダ以外から #Member.m アクセスできない @implemention: Member - (void)execute{ NSString *local_name; } 10 13年4月14日日曜日
  • 11. サンプルプログラム Member.h/Member.m →setter/getterを自分で用意 MemberSecond.h/MemberSecond.m →setter/getterをコンパイラが作る MemberThird.h/MemberThird.m →setter/getterをコンパイラが作る 11 13年4月14日日曜日
  • 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; } 12 13年4月14日日曜日
  • 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; 13 13年4月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を別にすることもできる 14 13年4月14日日曜日
  • 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 15 13年4月14日日曜日
  • 17. 前回の復習 このようなテーブルを表示 するアプリを作りましょう 17 13年4月14日日曜日
  • 18. 前回の復習 その2 このようにテキストフィー ルドに値を入力するアプリ を作ってください 18 13年4月14日日曜日
  • 19. TableViewの仕組み 19 13年4月14日日曜日
  • 20. 実装するメソッド(復習) numberOfSectionsInTableViewメソッド →Sectionがいくつあるか numberOfRowsInSectionメソッド →指定したSectionに何行あるか cellForRowAtIndexPathメソッド →指定したSection/行に該当するセル 20 13年4月14日日曜日
  • 21. TableViewの表示フロー セクションの数は? セクションの中に何行ある? これから指定する位置のセル をください 21 13年4月14日日曜日
  • 22. テーブルのセルを選択する ここではStoryBoardとprepareForSegueを使 って詳細画面の設定を行います。 StoryBoardにViewControllerを追加して、 cellと接続しましょう。 22 13年4月14日日曜日
  • 23. テーブルのセルを選択する -(void)prepareForSegue:(UIStoryboardSegue *)segue sender: (id)sender { MemberDetailViewController *nextController = (MemberDetailViewController*)segue.destinationViewController; //選択しているのが何行めかをセットする NSIndexPath *selectedIndexPath = self.tableView.indexPathForSelectedRow; nextController.selectedIndex = selectedIndexPath.row; } 次に表示するViewControllerへ何行目か教えてあげる 23 13年4月14日日曜日
  • 24. 選択された先では・・・ -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //TextFieldの値を設定 self.textField.text = [[MemberManager sharedInstance].members objectAtIndex:self.selectedIndex]; } Viewを表示するときにArray の情報を取得する 24 13年4月14日日曜日
  • 25. セルの中身を編集 こんな風にテキストフィール ドで編集できるようにしてみ ましょう さらに、Arrayの情報も書き 換えます。 25 13年4月14日日曜日
  • 26. Arrayの情報を書き換える -(BOOL)textFieldShouldReturn:(UITextField *)textField{ //キーパッドを消す [textField resignFirstResponder]; //シングルトンで持っている値を変更 [[MemberManager sharedInstance].members replaceObjectAtIndex:self.selectedIndex withObject:textField.text]; return NO; } replaceObjectAtIndexで値 を変更 26 13年4月14日日曜日
  • 27. セルをカスタマイズ UITableViewCellのサブクラスを作ると カスタマイズ可能 LabelとImageを表示してみましょう。 MemberCellという名前で UITextViewCellのサブクラスを作成 します。 27 13年4月14日日曜日
  • 28. セルをカスタマイズ MemberCellというカスタマイズクラスを設定 LabelとImageを設定 28 13年4月14日日曜日
  • 29. こんな風に動いたでしょうか 29 13年4月14日日曜日
  • 30. データの中身を変えたら・・・ reloadDataメソッドを使い、 テーブルの内容を更新する -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //Tableの中身を更新 [self.tableView reloadData]; } 30 13年4月14日日曜日
  • 31. ご清聴ありがとうございました 31 13年4月14日日曜日