使用故事板非常简单。你只需将动作拖到“退出”。但是如何从代码中调用它呢?
当前回答
供你参考:为了让@Vadim的答案与视图控制器中调用的手动unwind seque动作一起工作,你必须放置命令:
[self performSegueWithIdentifier:(NSString*) identifier sender:(id) sender];
在被重写的类方法viewDidAppear内部,如下所示:
-(void) viewDidAppear:(BOOL) animated
{
[super viewDidAppear: animated];
[self performSegueWithIdentifier:@"SomeSegueIdentifier" sender:self];
}
如果你把它放在其他ViewController方法中,比如viewDidLoad或viewWillAppear,它会被忽略。
其他回答
下面是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。
Vishal Chaudhry的回答对我很有用。我还会添加,为了手动触发seque使用:
[self performSegueWithIdentifier:@"mySegueName" sender:self];
在ViewController中,你还必须在故事板中ViewController的场景下选择unwind segue,并在RHS的属性视图中确保标识符字段包含你在代码中引用的名称(在上面的例子中是“mySegueName”)。
如果省略此步骤,上面的行将抛出一个异常,表示序列名未知。
供你参考:为了让@Vadim的答案与视图控制器中调用的手动unwind seque动作一起工作,你必须放置命令:
[self performSegueWithIdentifier:(NSString*) identifier sender:(id) sender];
在被重写的类方法viewDidAppear内部,如下所示:
-(void) viewDidAppear:(BOOL) animated
{
[super viewDidAppear: animated];
[self performSegueWithIdentifier:@"SomeSegueIdentifier" sender:self];
}
如果你把它放在其他ViewController方法中,比如viewDidLoad或viewWillAppear,它会被忽略。
推荐文章
- 如何使用Xcode创建。ipa文件?
- 动态改变UILabel的字体大小
- 在iPhone上确定用户是否启用了推送通知
- 是否有可能禁用浮动头在UITableView与UITableViewStylePlain?
- 错误ITMS-9000:“冗余二进制文件上传。火车1.0版本已经有一个二进制版本上传。
- Swift -转换为绝对值
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)
- 调整UITableView的大小以适应内容
- 在代码中为UIButton设置一个图像
- NSRange从Swift Range?
- UICollectionView中的单元格间距
- 我如何在我的iOS应用程序中每n分钟得到一个后台位置更新?
- 如何使用iOS创建GUID/UUID
- 禁用所呈现视图控制器的交互式撤销