故事板从视图控制器到它本身
我想制作一个机制来深入查看文件/文件夹列表。这个想法是每次用户选择一个文件夹时显示相同的文件列表视图控制器,并显示文件详细视图控制器,如果他/她选择一个文件。故事板从视图控制器到它本身
到目前为止,我已经创建从文件列表视图控制器,该文件详细视图控制器SEGUE,并从文件目录表视图单元格的文件列表表视图控制器赛格瑞:
问题在于,只要用户点击单元格,segue就会被执行。我想从表视图单元格中删除segue,并从文件列表视图控制器中将其自行创建。这样,我可以在用户点击单元格时以编程方式触发正确的继续。
所以,我的问题是:是否有可能在Interface Builder中创建从视图控制器到自身的segue?
您可以从故事板实例化一个视图控制器(同一个),然后将其推送到导航控制器上,而不是对同一个控制器执行一个segue。
我更喜欢幻影按钮解决方案,所有的转发都通过prepareForSegue:而不是记住是否在IB或代码中创建了转换。 – 2015-07-10 01:29:42
如果您使用的是导航控制器,则需要将ViewController推入导航堆栈。在这个例子中,我在我的Storyboard ID设置中命名了我的ViewController“VDI”。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
YourVC *dest = [storyboard instantiateViewControllerWithIdentifier:@"VDI"];
[self.navigationController pushViewController:dest animated:YES];
如果你不希望NavigationController不断添加自己到您的“返回”的历史,你可以加入到它像这样前弹出堆栈。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
YourVC *dest = [storyboard instantiateViewControllerWithIdentifier:@"VDI"];
UINavigationController *navController = self.navigationController;
[navController popViewControllerAnimated:NO];
[navController pushViewController:dest animated:YES];
在IOS 6,有a cleaner solution比使用幻象按钮。您还可以定义从表格单元格视图控制器SEGUE,并期待在发送者取消自动触发SEGUE:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//storyboards should use segues and override prepareForSegue instead
//but here we need custom logic to determine which segue to use
id item = [self.fetchedResultsController objectAtIndexPath:indexPath];
if (item meets condition) {
[self performSegueWithIdentifier:@"segue1" sender:self];
} else {
[self performSegueWithIdentifier:@"segue2" sender:self];
}
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
//ignore segue from cell since we we are calling manually in didSelectRowAtIndexPath
return (sender == self);
}
希望这有助于。
我发现你可以创建多个原型单元格。
比你可以链接每个单元格(在故事板)到不同的视图。
事情是这样的:
NSString *CellIdentifier = @"Cell";
if (Condition2){
CellIdentifier = @"Cell2"; }
if (Condition3){
CellIdentifier = @"Cell3"; }
界面生成器的方法:只要原因请看其指回所述呈现视图控制器故事板参考。
如果使用IB中的segues完成其他导航,此方法是最好的!谢谢! – 2017-10-17 00:47:27
是的,使用xcode 5你可以。 [见后](http://*.com/questions/9226983/storyboard-segue-from-view-controller-to-itself/23436265#23436265)。 – 2014-05-02 20:20:42
打开编辑器菜单,单击'显示文档轮廓',然后只需将鼠标右键拖动到轮廓的文件列表''ViewController''对象。 – 2017-08-21 06:54:03