1

storyBoardを使ってiPhoneアプリを作っています。

UINavidationView に UITableView があります。カスタムセルにデータをロードします。次に、ユーザーがセルをクリックすると、別のビュー (ResultView) に移動します。

ストーリーボードにビューとセグエを設定しました。

私の目標は、prepareForSegue メソッドから ResultView にデータを渡すことです。

そのために、UITableViewCell を実装するカスタム セルを作成しました。次に、作成日という名前の NSDate 型のプロパティを追加しました。選択したセルの作成日を ResultView に渡す必要があります。私は次の ate = readingCell.creationDate; を持っています。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"resultViewSegue"])
    {
        //Get a reference to the destination
        ResultsViewController * destinationView = segue.destinationViewController;

        //I try to get the selected cell in order to pass it's property
        historyCellClass * selectedCell = (historyCellClass*) sender;

        //pass the creation date to the destination view (it has its own creation date property)
        [destinationView setCreationDate:selectedCell.creationDate];
    }
}

ただし、結果ビューの作成日は常に null です。

プロパティを読み取るために、選択したセルの参照を取得していないようです。

セルの日付を次のビューに渡すにはどうすればよいですか?

助けてくれてありがとう

4

1 に答える 1

1

私がこれを処理した方法は、セグエの手動トリガーと選択状態を表す ivar を使用することです。

トリガーされるセグエが、(tableView セルの 1 つからではなく) あるビュー コントローラーから次のビュー コントローラーに移動することを確認します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.selectedModel = [self.myModel objectAtIndex:indexPath:row];
    [self performSegueWithIdentifier:@"resultsViewSegue"];

selectedModel は、テーブル データソースをサポートする配列内の単一要素と同じ型を持つ新しい ivar です。cellForRowAtIndexPath: の場合とまったく同じように、インデックス パスで検索します。

今 prepareForSegue:..

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"resultViewSegue"])
    {
        //Get a reference to the destination
        ResultsViewController * destinationView = segue.destinationViewController;

        //pass the creation date to the destination view (it has its own creation date property)
        [destinationView setCreationDate:self.selectedModel.creationDate];

        // selectedModel.creation date might not be right... use whatever way you get to creationDate
        // from the indexPath in cellForRowAtIndex path, that's the code you want above.
    }
}

テーブル ビューの選択からセグエの開始までの間に保存する状態には、いくつかの選択肢があります。選択したインデックス パス、または私が提案するモデル要素、または転送する予定のモデルの側面 (たとえば、作成日) を保存できます。状態を保存するための唯一の悪い考えは、テーブル セル自体です。

于 2012-10-01T15:25:04.803 に答える