使用故事板非常简单。你只需将动作拖到“退出”。但是如何从代码中调用它呢?
当前回答
斯威夫特4:
1. 在你想unwind到的控制器中创建一个@IBAction segue:
@IBAction func unwindToVC(segue: UIStoryboardSegue) {
}
2. 在故事板中,从你想要segue (unwind)的控制器中,从ctrl+拖动从控制器符号到退出符号并选择你之前创建的方法:
3.现在你可以注意到在文档大纲中你有了新的标题为“Unwind segue....”的行。现在您应该单击这一行并打开属性检查器来设置标识符(在我的示例中是unwindSegueIdentifier)。
4. 你快完成了!现在你需要打开你想要unwind的视图控制器并创建一些执行segue的方法。例如,你可以添加按钮,用@IBAction的代码连接它,然后在IBAction中添加perfromSegue(withIdentifier:sender:)方法:
@IBAction func unwindToSomeVCWithSegue(_ sender: UIButton) {
performSegue(withIdentifier: "unwindSegueIdentifier", sender: nil)
}
这就是你要做的一切!
其他回答
Bradleygriffith的回答很好。为了简化,我采取了第10步,并做了一个截图。这是Xcode 6的截图。
从橙色图标控制拖动到红色Exit图标,在视图中创建一个没有任何操作/按钮的展开。
然后在侧边栏中选择unwind segue:
设置Segue标识符字符串:
从代码中访问该标识符:
[self performSegueWithIdentifier:@"unwindIdentifier" sender:self];
下面是Objective C和Swift的完整答案:
1)在你的目标视图控制器(你想要segue到的地方)中创建一个IBAction unwind segue。在实现文件中的任何位置。
// Objective C
- (IBAction)unwindToContainerVC:(UIStoryboardSegue *)segue {
}
// Swift
@IBAction func unwindToContainerVC(segue: UIStoryboardSegue) {
}
2)在源视图控制器(你正在从中segue的控制器)上,⌃+从“activity Name”中拖动退出。你应该在弹出窗口中看到步骤1中创建的unwind segue。(如果你没有发现,请回顾第一步)。从弹出窗口中选择unwindToContainerVC:或者任何你命名的方法来连接你的源控制器到unwind IBAction。
3)在故事板的源视图控制器的文档大纲中选择segue(它将在底部附近列出),并给它一个标识符。
4)用这个方法从源视图控制器调用unwind segue,替换你的unwind segue名。
// Objective C
[self performSegueWithIdentifier:@"unwindToContainerVC" sender:self];
/ /快速
赛尔夫。举报者。
NB。使用unwind方法上segue参数的sourceViewController属性来访问源控制器上的任何公开属性。另外,请注意,框架处理解除源控制器。如果您想确认这一点,请向源控制器添加一个dealloc方法,并附上一条日志消息,该日志消息应该在源控制器被杀死后触发。如果dealloc不火,你可能有一个保留周期。
创建一个手动segue (ctrl-drag from File 's Owner to Exit), 选择它在左侧控制器菜单下面绿色退出按钮。
插入要unwind的Segue名称。
然后,- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender.与您的续集识别。
我使用[self disdisviewcontrolleranimated: YES completion: nil];它会将你返回到调用ViewController。
向后兼容的解决方案,将工作于ios6之前的版本,为那些感兴趣:
- (void)unwindToViewControllerOfClass:(Class)vcClass animated:(BOOL)animated {
for (int i=self.navigationController.viewControllers.count - 1; i >= 0; i--) {
UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:i];
if ([vc isKindOfClass:vcClass]) {
[self.navigationController popToViewController:vc animated:animated];
return;
}
}
}
推荐文章
- 更改UITextField和UITextView光标/插入符颜色
- 'Project Name'是通过优化编译的——步进可能会表现得很奇怪;变量可能不可用
- 如何设置回退按钮文本在Swift
- 模拟器慢动作动画现在打开了吗?
- 如何为TableView创建NSIndexPath
- 滑动删除和“更多”按钮(就像iOS 7的邮件应用程序)
- 使UINavigationBar透明
- 如何改变推和弹出动画在一个基于导航的应用程序
- 删除/重置核心数据中的所有条目?
- setNeedsLayout vs. setNeedsUpdateConstraints和layoutIfNeeded vs. updateConstraintsIfNeeded
- 不区分大小写的比较
- 我怎么能得到一个uiimage的高度和宽度?
- 我如何模仿地图应用程序的底部表格?
- 改变导航栏后退按钮的颜色
- iOS应用程序“应用程序无法验证”只在一台设备上