PIYO - Tech & Life -

Segueによる画面遷移を便利にするTKRSegueOptions

CocoaPods iOS

4月ぐらいにスライドで見ていいなーと思ったんだけど、最近初めて使ってみてやはり便利だったので整理しておく。

余談だけどスライドでみたときはTKRIntentって名前だったんだけど、わかりやすさのために名前変えたんですかね。

どんなときに便利かっていうと、個人的にはテーブルビューでセルを選択して次の画面に行きたいときに、選択したセルに関連する情報とかを次のViewControllerに渡したいときかなと思う。

TKRSegueOptionsを使わないときは、ViewControllerを生成してidを渡して画面遷移するっていうやり方をしてた気がする。もっとスマートな方法があったかもしれないが。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyViewController* viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    viewController.index = indexPath.row;
    [self.navigationController pushViewController:viewController animated:YES];
}

これがTKRSegueOptionsを使うとこんな感じでいける。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"Design" options:@{@"id":[NSNumber numberWithInteger:indexPath.row]}];
}

画面遷移自体はStoryboardでくっつけたSegueをIdentifier経由で呼べばよくて、移動先でself.segueOptions[@"index"];みたいに取り出すことができる。

これSDK標準でやって欲しいぐらい便利。使わない手はない。