使用 SLPagingViewSwift 和故事板展开可选值时意外发现 nil

Unexpectedly found nil while unwrapping an optional value with SLPagingViewSwift and storyboards

我通过添加 1 个初始视图控制器(class 设置为 SLPagingViewSwift)和 3 个其他视图控制器(class 设置为 FirstViewController,将 SLPagingViewSwift 与故事板一起使用,故事板 ID 设置为个人资料;class 设置为 SecondViewController,故事板 ID 设置为主页;class 设置为 ThirdViewController,故事板 ID 设置为聊天)

我的AppDelegate.swift看起来像这样

import UIKit
import CoreData

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var nav: UINavigationController?
    var controller: SLPagingViewSwift?
    var profileTableViewController: FirstViewController?
    var homeViewController: SecondViewController?
    var chatViewController: ThirdViewController?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        var orange = UIColor(red: 255/255, green: 69.0/255, blue: 0.0/255, alpha: 1.0)
        var gray = UIColor(red: 0.84, green: 0.84, blue: 0.84, alpha: 1.0)

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        profileTableViewController = storyboard.instantiateViewControllerWithIdentifier("profile") as? FirstViewController

        homeViewController = storyboard.instantiateViewControllerWithIdentifier("home") as? SecondViewController
        // homeViewController!.title = "Home"
        // homeViewController!.view.backgroundColor = UIColor.yellowColor()

        chatViewController = storyboard.instantiateViewControllerWithIdentifier("chat") as? ThirdViewController
        // chatViewController!.title = "Chat"
        // chatViewController!.view.backgroundColor = gray

        var img1 = UIImage(named: "profile")
        img1 = img1?.imageWithRenderingMode(.AlwaysTemplate)
        var img2 = UIImage(named: "gear")
        img2 = img2?.imageWithRenderingMode(.AlwaysTemplate)
        var img3 = UIImage(named: "chat")
        img3 = img3?.imageWithRenderingMode(.AlwaysTemplate)


        var items = [UIImageView(image: img1), UIImageView(image: img2), UIImageView(image: img3)]
        var controllers = [profileTableViewController!, homeViewController!, chatViewController!]
        controller = SLPagingViewSwift(items: items, controllers: controllers, showPageControl: false)

        controller?.pagingViewMoving = ({ subviews in
            for v in subviews {
                var lbl = v as! UIImageView
                var c = gray

                if(lbl.frame.origin.x > 45 && lbl.frame.origin.x < 145) {
                    c = self.gradient(Double(lbl.frame.origin.x), topX: Double(46), bottomX: Double(144), initC: orange, goal: gray)
                }
                else if (lbl.frame.origin.x > 145 && lbl.frame.origin.x < 245) {
                    c = self.gradient(Double(lbl.frame.origin.x), topX: Double(146), bottomX: Double(244), initC: gray, goal: orange)
                }
                else if(lbl.frame.origin.x == 145){
                    c = orange
                }
                lbl.tintColor = c
            }
        })

        controller?.navigationSideItemsStyle = .SLNavigationSideItemsStyleNormal

        controller?.setCurrentIndex(1, animated: false)

        self.nav = UINavigationController(rootViewController: controller!)
        self.window?.rootViewController = self.nav
        self.window?.backgroundColor = UIColor.whiteColor()
        self.window?.makeKeyAndVisible()
        return true
    }

 ...
}

然而,当我 运行 它时,我得到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

在 SLPagingViewSwift.swift

的下一行
self.scrollView.setContentOffset(CGPointMake(xOffset, self.scrollView.contentOffset.y), animated: animated)

请帮助调试我做错了什么。 Swift

中似乎没有将 SLPagingViewSwift 与故事板集成的示例

看起来你调用这个方法 controller?.setCurrentIndex(1, animated: false) 太早了 self.scrollView 还没有初始化。

因此,为了延迟该方法调用子类 SLPagingViewSwift 覆盖方法 viewdidload 添加方法调用 controller?.setCurrentIndex(1, animated: false) 那里