Weitere ähnliche Inhalte
Ähnlich wie I phoneアプリ入門 第5回 (20)
I phoneアプリ入門 第5回
- 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日日曜日
- 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日日曜日
- 30. データの中身を変えたら・・・
reloadDataメソッドを使い、
テーブルの内容を更新する
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//Tableの中身を更新
[self.tableView reloadData];
}
30
13年4月14日日曜日