私は先日このブログ投稿に出くわしましたが、文字通り、論理的に実装する方法がわかりません。
何か案は?
私はそれがコアデータに関係していると考えていました.「力」は対多関係の別のエンティティであり、それ以外に、私は迷っています.
私は先日このブログ投稿に出くわしましたが、文字通り、論理的に実装する方法がわかりません。
何か案は?
私はそれがコアデータに関係していると考えていました.「力」は対多関係の別のエンティティであり、それ以外に、私は迷っています.
NSMutableSet を使用して「パワー」セルのチェックとチェック解除をサポートし、選択したパワーを追跡できます。これは、UITableView に電力データを提供するために Core Data またはその他の方法を使用するかどうかに関係なく機能します。
たとえば、テーブルのデータ ソースの実装では次のようになります。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// do usual stuff here including getting the cell
// determine the power from the IndexPath.row
if ([selectedPowerSet member:power])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
そして、テーブルのデリゲート (通常は同じクラス) の実装では:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// determine the power from the IndexPath.row
if ([selectedPowerSet member:power]) {
[selectedPowerSet removeObject:power];
} else {
[selectedPowerSet addObject:power];
}
[tableView reloadData];
}
ビュー階層を実装する場合は、ナビゲーション プロジェクトから開始するだけです。Superhero テーブルビュー コントローラーはルート コントローラーであり、powers テーブルビュー コントローラーはサブ コントローラーです。
コア データ モデルには、スーパーヒーロー エンティティとパワー エンティティの 2 つのエンティティがあります。各スーパーヒーロー エンティティには名前があり、次にパワー エンティティとの対多関係があります。パワー エンティティには名前があり、(オプションで) パワーを持つすべてのスーパーヒーロー エンティティとの相互対多の関係があります。(実際には必要ありませんが、この場合は良い習慣です。)
スーパーヒーロー テーブルビュー データソースは、すべてのスーパーヒーロー エンティティのフェッチを実行し、各セルのテキストに各スーパーヒーローの名前を入力します。ユーザーがヒーローをクリックすると、スーパーヒーロー テーブル ビューは navcontroller にパワー テーブルビューをスタックにプッシュし、選択したスーパーヒーロー エンティティをパワー テーブルビュー データソースに渡します。次に、パワー テーブルビュー データソースは、スーパーヒーロー エンティティとの関係にあるパワーをテーブルに取り込みます。また、必要に応じてパワー エンティティを作成し、関係に追加します。
使用しているデータの量が少ない場合は、これにコア データを使用する必要はありません。各キーがスーパーヒーローの名前で、各値がパワー名の配列であるディクショナリを作成できます。スーパーヒーロー テーブルビュー データソースにはキーが入力され、パワー テーブルビュー データソースには値配列の個々の要素が入力されます。
UINavigationControllerから始めることをお勧めします。