如何从表列表中加载具有不同数据的相同UIView?

时间:2012-01-05 22:45:23

标签: objective-c xcode uitableview detailsview

我有一个小项目,我正在尝试为游戏制作食谱清单。我的UITableView运行得很好 - 唯一的问题是我不知道如何使用DetailView连接每个单元格。目前,如果您选择任何单元格,它将执行选择动画并且无处可去。

我也不知道最好的方法是使用最新的iOS5 SDK& Xcode 4.2。我对故事板几乎不熟悉,但我认为必须有一个比为每个配方创建40个不同的DetailView更简单的方法。

我希望创建一个新的Recipe.h / Recipe.m对象集并保存其中的所有数据。然后它可以加载到相同的DetailView模板中,但信息会根据选择的配方而改变。我希望这有道理吗?

如果我能澄清任何事情,请告诉我。我已经附上了my project source code,如果这会有所帮助......提前感谢!

1 个答案:

答案 0 :(得分:2)

首先,将这段代码添加到MasterViewController.m

#import "DetailViewController.h"

然后打开MainStoryboard.storyboard,然后按照以下步骤操作:

  1. UITableViewCell添加到MasterView中的tableview。
  2. 在单元格的检查器中,选择样式为Basic,并将其标识符设为“Cell”。
  3. 控制+单击单元格并拖动一行直到DetailView并选择Push选项。你应该能够看到一个Storyboard segue。将其标识符设为“showDetail”。
  4. 然后转到MasterViewController.m并在cellForRowAtIndexPath:

    中评论以下代码

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    这是因为您已经从

    获取了一个单元格

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  5. 然后在MasterViewController.m中添加以下代码

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
      if ([segue.identifier isEqualToString:@"showDetail"])
      {
        DetailViewController *dvc = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        [dvc setDetailItem:[self.harvestRecipeList objectAtIndex:indexPath.row]];
      }
    }
    
  6. 构建并运行。你应该好好去。