代码用于使用Swift 1,但现在没有,这是我的问题。 (确实检查了其他问题,但这有点不同,并且足以使其他解决方案无效。
并且工作正常,用户输入他们的用户名和密码。然后我以编程方式检查他们是否可以登录并且仍然很好并按照以下方式进行展开:
self.performSegueWithIdentifier("unwindGoToTeamPage", sender: self)
但即使调用func,以下代码也不会触发。我知道,因为我在他们的debuging中有一个打印声明,它显示在控制台上:
@IBAction func unwindGoToTeamPage(sender: UIStoryboardSegue){
print("In here")
self.performSegueWithIdentifier("goToTeamPage", sender: self)
}
现在我知道它与ViewController生命周期开始时你无法调用
的原因相同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中,我常常放入一个计时器,一切都很好,但不再有效,我宁愿选择一个不是黑客的坚固解决方案。我认为解决方案涉及等到登录视图控制器完全被解除但不确定实现它的正确方法。
可以选择调度到主队列。如果有人有答案并发布更新,我会等待。我还注意到它在iPhone或iPod上运行得很好,但它的问题尚未解决。
感谢任何解决此问题的指针。感谢
更新,是的,我确实尝试过UITextField解决方案,但这似乎不是此实例中的问题。我正在慢慢地将问题识别为一个视图控制器尚未在
之前完成 self.performSegueWithIdentifier("goToTeamPage", sender: self)
火。
我也很抱歉我没有提到控制台消息: 警告:尝试显示< 新视图控制器> on< 当前视图控制器>其视图不在窗口层次结构中!
所以我看到我的问题是需要按照以下方式运行登录视图控制器:让orignial viewcontroller获取登录视图控制器已完成的消息,然后才触发
self.performSegueWithIdentifier("goToTeamPage", sender: self)
所以有办法得到某种回调来告诉原始视图控制器子视图控制器已完全完成,所以我只能在子视图控制器完成后调用下一个函数。
感谢您提供任何帮助。
答案 0 :(得分:0)
我有这种工作,但感觉它真的只是另一个黑客,虽然这次让我摆脱困境但这次失望我无法找到正确的方法。
所以问题主要在于登录屏幕的模态显示,一旦它被解除,从视图层次结构中移除需要很多微秒。尝试使用
移动到另一个viewcontrollerself.performSegueWithIdentifier("goToTeamPage", sender: self)
不会起作用,这是我的困境。
因此,为了解决这个问题,我将登录屏幕设为全屏(不是弹出式或模态式)然后放入代码
self.performSegueWithIdentifier("goToTeamPage", sender: self)
中的
override func viewDidAppear(animated: Bool) {
self.performSegueWithIdentifier("goToTeamPage", sender: self)
}
功能
不是最好的解决方案,因为登录屏幕现在全屏,而iphone上的确定不是iPad上最好的。
所以,有点固定,但作为一个黑客和解决方案,如果有人有一个解决方案,我可以回到登录屏幕的模态视图仍然保持。