在应用程序开发方面我是全新的,所以这可能是一个愚蠢的问题。
所以我做了一个UI表。它是可定制的,因为用户可以插入或删除行。我想让用户点击一个表格单元格,它会将他们定向到另一个视图控制器。每个单元格的所有视图控制器看起来都是一样的(有点像模板)。知道如何使用情节提要来实现这一点吗?
欣赏它!
在应用程序开发方面我是全新的,所以这可能是一个愚蠢的问题。
所以我做了一个UI表。它是可定制的,因为用户可以插入或删除行。我想让用户点击一个表格单元格,它会将他们定向到另一个视图控制器。每个单元格的所有视图控制器看起来都是一样的(有点像模板)。知道如何使用情节提要来实现这一点吗?
欣赏它!
您不需要一组视图控制器。您只需要一个视图控制器,当用户单击单元格导航到它时会实例化它,并在用户关闭屏幕以返回主视图控制器时立即释放。
在情节提要中实现这一点所需要做的就是将主视图控制器中的单元格或按钮的推送转场添加到“详细”视图控制器。当 segue 被触发时,您的代码有机会prepareForSegue:sender:
在控制器的视图出现在屏幕上之前,在方法中配置新创建的“详细”视图控制器。这是您自定义显示在详细视图中的数据的地方(大概取决于表中触发 segue 的特定行)。
这是一个很好的教程的链接,它解释了如何使用 Xcode 和故事板构建一个主从应用程序。
在情节提要中,您创建一个视图控制器,它将在选择单元格后显示数据,您只需要一个而不需要一个数组。将它从 tableviewcontroller 链接到新的 viewcontroller。在 Xcode 中单击 segue,然后在检查器中为其指定一个唯一标识符。
tableView:didSelectRowAtIndexPath:
当你选择一个单元格时会被调用,在这里你可以执行 segue:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.selectedObject = ... // store the object that was selected
[self performSegueWithIdentifier:@"mySegue" sender:self];
}
在您的 tableviewcontroller 中,您确保实现prepareForSegue:sender:
. 在这里,您可以交出正确的模型对象以使用数据填充目标视图控制器。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"mySegue"])
{
MyDetailViewCotroller *controller = [segue destinationViewController];
controller.dataObject = self.selectedObject;
}
}
查看来自 Apple 的示例代码(虽然没有使用 Storyboard):http: //developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007416