У меня есть класс, как это,PushViewController из другого UIViewController - Swift
import UIkit
class One {
let btn = UIButton()
override func viewDidLoad(){
super.viewDidLoad()
btn.frame = CGRectMake(10, 20, 30, 30)
btn.setTitle("Go", forState: UIControlState.Normal)
btn.addTarget(self, action: "goToClassTwo", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(btn)
}
func goToClassTwo(){
if(AppGlobals().getIsFromDiffView()){
let difView = UINavigationController(rootViewController: DiffView())
difView.pushViewController(Two(), animated: true)
}else{
self.navigationController?.pushViewController(Two(), animated: true)
}
}
}
Класс сеттер/добытчика, как это,
class AppGlobals: NSObject {
var isFromDiffView = false
func setIsFromDiffView(val: Bool){
isFromDiffView = val
}
func getIsFromDiffView() -> Bool {
return isFromDiffView
}
}
И у меня есть еще один класс, как это,
class DiffView {
let btn = UIButton()
override func viewDidLoad(){
super.viewDidLoad()
btn.frame = CGRectMake(10, 20, 30, 30)
btn.setTitle("Push", forState: UIControlState.Normal)
btn.addTarget(self, action: "btnAction", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(btn)
}
func btnAction(){
AppGlobals().setIsFromDiffView(true)
One().goToClassTwo()
}
}
У меня здесь проблема. Когда нажата кнопка «Go» в классе «One», отображается контроллер «Two». Но когда я нажимаю кнопку «Push» в классе «DiffView», вызывается, контроллер «Два» не отображается.
Я проверил установки контрольных точек. Элемент управления приходит к функции goToClassTwo
в классе «Один» и выполняется путь if
. Но контроллер «Два» не отображается. difView.pushViewController
. Но это не толкает к следующему виду.
ПРИМЕЧАНИЕ: Я не использую раскадровки
Любая помощь будет оценен по достоинству!
Проверьте, является ли второй раз AppGlobals(). GetIsFromDiffView() является ложным. – UlyssesR
Это правда. Элемент управления попадает в путь 'if'. Но ничего не происходит. –
проблема в том, что вы создаете UINavigationController и нажимаете на него два(). Но вы никогда не представляете созданный контроллер навигации в окне вашего приложения. Таким образом, представление определенно не будет отображаться. – Surely