読者です 読者をやめる 読者になる 読者になる

gl5_progのメモ

自分のためのメモとかまとめとか

iOSプログラミング逆引きメモ

φ(..)メモメモ


シーン遷移

プログラムからsegueを実行する

performSegueWithIdentifier:sender:を使う。

[self performSegueWithIdentifier:@"doneSegue" sender:self];
シーン終了時に処理を行う

シーン終了時(親ViewControllerから取り除かれるとき)、UIViewControllerのwillMoveToParentViewController:の引数がnilで呼ばれるので、そこで処理を行う。 複数のシーン階層が一度に破棄される場合、現在表示中のシーンに対してのみ呼ばれ、途中の階層に対しては呼ばれないようなので注意。

TableViewを利用する

UITableViewControllerを継承するのが楽

セルを表示する
  • tableView:numberOfRowsInSection:を実装する
  • tableView:cellForRowAtIndexPath:を実装する
  • tableView:numberOfRowsInSection:を使う場合は、ストーリーボードでのTableViewのcontent属性がStatic Cellsになっているとどこかで例外が発生して落ちる。
セル選択時の処理を記述する

UITableViewDelegateのtableView:didSelectRowAtIndexPath:を使う。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
}
セクションヘッダーのみを更新する
[self tableView:self.tableView willDisplayHeaderView:[self.tableView headerViewForSection:0] forSection:0];
Nibファイル(xibファイル)からプロトタイプセルを登録する
UINib* nib = [UINib nibWithNibName:@"MyCustomView" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"myCustomCell"];

文字列

数値を文字列化

  • NSString stringWithFormat:を使う。
  • NSIntegerを文字列化する場合は64bit環境のことを考えて、longでキャストする。“String Format Specifiers”
NSString stringWithFormat:@"%ld", (long)indexPath.row]

ストーリーボード

セグエによるシーン遷移時情報のやりとりをする

  • セグエを識別するための名前をつける(Identifier)
  • 遷移元シーンのViewControllerにprepareForSegue:sender:を実装する。

例:

(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if ([[segue identifier] isEqualToString:@"ShowSightingDetails"]) {
    BirdsDetailViewController *detailViewController = [segue destinationViewController];
    detailViewController.sighting = [self.dataController objectInListAtIndex:[self.tableView  indexPathForSelectedRow].row];
  }
}

シーン(ViewController)をコードからインスタンス化する

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MyViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"myViewController"];

Nibファイル(xibファイル)からインスタンス化する

UINib* nib = [UINib nibWithNibName:@"MyCustomView" bundle:nil];
NSArray* objects = [nib instantiateWithOwner:nil options:nil];

iPodライブラリー

#import <MediaPlayer/MediaPlayer.h>
// ミュージックプレーヤーをインスタンス化する
MPMusicPlayerController*myPlayer = [MPMusicPlayerController applicationMusicPlayer];
// デバイス上のすべてのメディアアイテムを含む再生キューを割り当てる
[myPlayer setQueueWithQuery:[MPMediaQuery songsQuery]];
// キューの先頭から再生を開始する
[myPlayerplay];
  • 曲のリストを取得する

その他

retinaディスプレイかどうかを判定する
if ( [UIScreen mainScreen].scale > 1.0 )
{
    // retina
}
NSArrayのソート

昇順でのソート

    NSMutableArray* sorted = [NSMutableArray arrayWithArray:[array sortedArrayUsingComparator: ^(Obj* obj1, Obj* obj2) {
        return [obj1 compare:obj2];
    }]];