0

私は先日このブログ投稿に出くわしましたが、文字通り、論理的に実装する方法がわかりません。

何か案は?

私はそれがコアデータに関係していると考えていました.「力」は対多関係の別のエンティティであり、それ以外に、私は迷っています.

4

2 に答える 2

1

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];
}
于 2009-11-11T07:21:22.857 に答える
1

ビュー階層を実装する場合は、ナビゲーション プロジェクトから開始するだけです。Superhero テーブルビュー コントローラーはルート コントローラーであり、powers テーブルビュー コントローラーはサブ コントローラーです。

コア データ モデルには、スーパーヒーロー エンティティとパワー エンティティの 2 つのエンティティがあります。各スーパーヒーロー エンティティには名前があり、次にパワー エンティティとの対多関係があります。パワー エンティティには名前があり、(オプションで) パワーを持つすべてのスーパーヒーロー エンティティとの相互対多の関係があります。(実際には必要ありませんが、この場合は良い習慣です。)

スーパーヒーロー テーブルビュー データソースは、すべてのスーパーヒーロー エンティティのフェッチを実行し、各セルのテキストに各スーパーヒーローの名前を入力します。ユーザーがヒーローをクリックすると、スーパーヒーロー テーブル ビューは navcontroller にパワー テーブルビューをスタックにプッシュし、選択したスーパーヒーロー エンティティをパワー テーブルビュー データソースに渡します。次に、パワー テーブルビュー データソースは、スーパーヒーロー エンティティとの関係にあるパワーをテーブルに取り込みます。また、必要に応じてパワー エンティティを作成し、関係に追加します。

使用しているデータの量が少ない場合は、これにコア データを使用する必要はありません。各キーがスーパーヒーローの名前で、各値がパワー名​​の配列であるディクショナリを作成できます。スーパーヒーロー テーブルビュー データソースにはキーが入力され、パワー テーブルビュー データソースには値配列の個々の要素が入力されます。

UINavigationControllerから始めることをお勧めします。

于 2009-11-10T18:23:10.900 に答える