我制作了一个UIPageViewController,它将管理3个UIViewControllers。
这一切似乎都运行得很好,直到我在故事板中添加一个按钮,然后用IBOutlet挂钩 - 然后我的应用程序崩溃了:
“libc ++ abi.dylib:以NSException类型的未捕获异常终止”
此外,如果我用IBAction挂上按钮,点击按钮时应用程序会崩溃。
class PostPageViewController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("IN PAGE VC!!")
self.dataSource = self
if let firstViewController = orderedViewControllers.first {
print("IN FIRST!! \(firstViewController)")
setViewControllers([firstViewController], direction: .Forward, animated: true, completion: nil)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
private(set) lazy var orderedViewControllers: [UIViewController] = {
return [self.newViewController("1"), self.newViewController("2"), self.newViewController("3")]
}()
private func newViewController(number: String) -> UIViewController {
return self.storyboard!.instantiateViewControllerWithIdentifier("NewPostVC\(number)")
}
}
我也有一个控制页面的扩展程序,但在这种情况下,我认为这不是很有趣。
这是我的第一个视图控制器,这导致了问题:
class NewPostVC1: UIViewController {
@IBOutlet weak var cancelButton: UIButton!
@IBAction func cancelButtonTapped(sender: AnyObject) {
print("Cancel button tapped!")
}
override func viewDidLoad() {
super.viewDidLoad()
print("NEWPOSTVC 111111")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
所以,正如所说的那样,当点击按钮时应用程序会崩溃 - 我想这是关于UIPageViewController无法弄清楚哪个UIViewController正在进行交互,但我无法找到任何确认这一点的东西。有没有人对这个问题有所了解?
UPDATE :我刚刚发现mu第一个viewController不是instanciated,但是数字2和3是..所以现在我的问题是我必须以某种方式加载我的viewcontroller,在它显示之前 - 或者只是在第一页上没有任何功能,并且只在第2和第3页上有任何功能。是否有人建议在显示之前实例化第一个viewcontroller?我已经尝试过storyboard.instantiateViewControllerWithIdentifier(“NewPostVC1”),但它不能完成这项工作!
答案 0 :(得分:1)
这类错误通常意味着你在故事板上错误地勾起了一些东西。例如。你已经添加了一个IBAction,把它连接到按钮动作,但后来回到代码并更改了方法的名称(偶然或故意)。