【发布时间】:2015-10-06 03:59:46
【问题描述】:
以前可以使用 Swift 1 的代码,但现在不能使用,这是我的问题。 (确实检查了其他问题,但这略有不同,足以使其他解决方案不起作用。
它工作正常,用户输入他们的用户名和密码。然后我以编程方式检查他们是否可以登录并且一切正常,然后按如下方式进行放松:
self.performSegueWithIdentifier("unwindGoToTeamPage", sender: self)
但即使调用了 func,以下代码也不会触发。我知道,因为我在他们的调试中有一个打印语句,它显示在控制台上:
@IBAction func unwindGoToTeamPage(sender: UIStoryboardSegue){
print("In here")
self.performSegueWithIdentifier("goToTeamPage", sender: self)
}
现在我知道它与在 ViewController 生命周期开始时不能调用 a 的原因相同
self.performSegueWithIdentifier("goToTeamPage", sender: self)
因为它不会在
override func viewDidLoad() {
super.viewDidLoad()
}
或者
override func viewWillAppear(animated: Bool) {
}
但仅限于
override func viewDidAppear(animated: Bool) {
if appDelegate.tkData[0] == "1"
{
self.performSegueWithIdentifier("goToTeamPage", sender: self)
}
}
在 Swift 1 和 Objective-C 中,我曾经放入一个计时器,一切都很好,但它不再起作用,我更喜欢放入一个不是 hack 的可靠解决方案。我认为解决方案涉及等到登录视图控制器完全解除,但不确定实现它的正确方法。
调度到主队列是否是一种选择。如果有人有答案并发布更新,我会在等待时尝试。我还注意到它在 iPhone 或 iPod 上运行良好,但在 iPad 上问题未解决。
感谢任何解决此问题的指针。谢谢
更新,是的,我确实尝试了 UITextField 解决方案,但在这种情况下这似乎不是问题。我正在慢慢将问题确定为一个视图控制器在
之前尚未完成 self.performSegueWithIdentifier("goToTeamPage", sender: self)
火灾。
我也很抱歉我没有提到控制台消息,它是: 警告:尝试在 当前视图控制器> 上显示 新视图控制器>,其视图不在窗口层次结构中!
所以我看到我的问题是需要以某种方式运行登录视图控制器,以便让原始视图控制器收到登录视图控制器已完成的消息,然后才触发
self.performSegueWithIdentifier("goToTeamPage", sender: self)
所以有没有办法得到某种回调来告诉原始视图控制器子视图控制器已经完全完成,所以我只能在子视图控制器完成后调用下一个函数。
感谢您对此的任何帮助。
【问题讨论】:
-
能否请您检查this thread 是否解决了您的问题。
-
谢谢 Abhinav,不,因为我没有 UITextField 问题。我确实查看了这些问题并尝试了解决方案,但没有帮助。
-
用更多信息更新了我的问题,以防万一
-
您是否在要执行 segue 的 VC 之上呈现登录 VC?如果是这样,那么为什么不使用完成块呢?如果你可以分享你项目的 GitHub 链接,我可以看看。
-
尚未在 github 上注册,但您的解决方案是正确的,因为我需要简单地实现一个完成块。我正在尝试查找示例代码以使用不确定如何实现它,但现在试图弄清楚。如果您有一个示例链接将不胜感激,否则我将继续研究这个问题。再次感谢
标签: ios segue swift2 uistoryboard