トップ «前の日記(2012-06-15) 最新 次の日記(2012-06-19)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|

2012-06-17 [iOS]segueの分岐

Cocoa勉強会で、編集中にテーブルのセルを選択可能にする方法は?という質問が出たので試してみた。

Table Viewを選択して、attributes inspectorのTable VewのEditingが"No Selecting During Editing"になっているのを"Single Selecting During Editing"に変更すれば編集中も選択できるようになった。

編集中選択可能

ただし、編集中も画面遷移してしまった。Storyboardでsegueで画面遷移させている場合、編集中だと画面遷移させないという処理の分岐を実装するにはどうすればいいのだろうか?

UIStoryboardSegueのサブクラスを作成する方法等考えたのだが、もっと簡単な方法は?

これもCocoa勉強会の仲間からアドバイスを貰った。

まず、table view cellに設定されているsegueを削除する。

segue削除

そして、view controllerにsegueを設定する。

segue追加

そして、デリゲートのdidSelectRowAtIndexPath:で分岐を書けばよい。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.tableView.editing) {
        [self performSegueWithIdentifier:@"showDetail" sender:self];
    }
}

一人で仕事をしていると質問する相手がいないので困ってしまうが、Cocoa勉強会の仲間に感謝!

_ 関連情報

Cocoa勉強会

トップ «前の日記(2012-06-15) 最新 次の日記(2012-06-19)» 編集