1

我正在使用 StoryBoard 开发 Iphone 应用程序。

我在 UINavidationView 中有一个 UITableView。我在自定义单元格中加载数据。然后当用户单击单元格时,我转到另一个视图(ResultView)。

我在情节提要中设置了视图和转场。

我的目标是从 prepareForSegue 方法向 ResultView 传递数据。

为此,我创建了一个实现 UITableViewCell 的自定义单元格。然后我添加了一个 NSDate 类型的属性,名为:creationDate。我需要将所选单元格的创建日期传递给 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];
    }
}

但是,结果视图的创建日期始终为空。

看起来我没有获得所选单元格的引用以读取其属性。

如何将单元格的日期传递给下一个视图?

非常感谢您的帮助

4

1 回答 1

1

我处理这个问题的方法是手动触发 segue 和表示选择状态的 ivar。

确保被触发的 segue 从一个视图控制器转到下一个(而不是从一个 tableView 单元格)。

- (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.
    }
}

在表格视图选择和 segue 开始之间保存什么状态有几个选择。您可以保存选定的索引路径,或者我建议的模型元素,或者只是您打算传递的模型的方面(例如,您的 creationDate )。保存状态的唯一坏主意是表格单元格本身。

于 2012-10-01T15:25:04.803 回答