故事板& Segue - 传递数据我做得好吗?

时间:2012-05-21 04:38:21

标签: iphone ios uitableview storyboard segue

我正在使用Storyboards&塞格斯。我想从“Contacts List”(tableView)切换到“Profile view”(ScrollView)。

三个问题

  • 这是最好的方式(更干净,更漂亮)吗?的&安培;为什么?
  • 当我这样做时:ProfileViewController * aProfileView =(ProfileViewController *)[segue destinationViewController];这是一个实例化的新视图吗? (就像它将创建2个Profile视图)。
  • 我是否需要清理(在某处删除“个人资料视图”?)或者单独使用导航控制器进行操作?

//代码

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showProfileSelected"]) 
    {
        // Get the Selected raw
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        Profile *selectedProfile = [self.profilesTable objectAtIndex:indexPath.row];

        // Using segue --> Send the current selected profile to "ProfileView"
        ProfileViewController *aProfileView = (ProfileViewController *)[segue destinationViewController];
        aProfileView.currentProfile = selectedProfile;
    }
}

//其他方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showProfileSelected"]) 
    {
        // Get the Selected raw
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        Profile *selectedProfile = [self.profilesTable objectAtIndex:indexPath.row];

        // Using segue --> Send the current selected profile to "ProfileView"
        [segue.destinationViewController setCurrentProfile:selectedProfile];
    }
}

1 个答案:

答案 0 :(得分:1)

你的第一个例子很好。您没有创建任何内容,只是获取对目标控制器的引用。设置这样的变量允许您在目标视图控制器上设置多个属性,而无需反复投射。

所以,回答你的具体问题:

  • 是的,这是最好的方式。由于目标视图控制器的通用类
  • ,很难让prepareForSegue“美丽”
  • 不,你没有创造任何东西。
  • 不,你没有什么要清理的。