右键拖拽无法连接Unwind Segue退出按钮的问题排查
Unwind Segue 无法连接及页面栈清理问题解决
一、解决Unwind Segue无法连接的问题
先排查几个核心点:
- 确认登录视图控制器(A)的Storyboard关联:打开Storyboard,选中A控制器,在Identity Inspector里检查Class是否绑定到了你写有
unwindToSignUp方法的自定义类,别用默认的UIViewController。 - 核对unwind方法的有效性:你的方法签名
IBAction func unwindToSignUp(unwindSegue: UIStoryboardSegue) {}是对的,但要确保方法没有被标记为private,必须是internal或public权限(默认就是internal,不用额外加)。 - 换一种连接方式:别右键拖按钮到exit,试试直接按住Control键拖按钮到C控制器顶部的黄色ViewController图标,在弹出的菜单里选你的
unwindToSignUp方法;或者先拖exit到按钮创建segue,再关联触发事件。 - 清理项目缓存:执行
Product > Clean Build Folder(快捷键Shift+Command+K),再重启Xcode重试。
二、实现从C回到A并移除B页面
要确保回到A后导航栈里只剩A,在登录视图控制器的unwind方法里添加栈清理逻辑:
IBAction func unwindToSignUp(unwindSegue: UIStoryboardSegue) { // 清空导航栈,只保留当前登录控制器 navigationController?.viewControllers = [self] }
这样当从C触发unwind segue后,导航栈里的B和C都会被移除,只剩下A控制器。
内容的提问来源于stack exchange,提问作者Daniel Patriarca
相关产品推荐
相关产品推荐

