设置currentPageIndicatorTintColor的错误

时间:2016-03-08 23:43:36

标签: ios swift uipagecontrol

我有使用scrollview和pageContoll的自定义视图。

let backScrollView = NSBundle.mainBundle().loadNibNamed("BackScrollView", owner: self, options: nil)[0] as! BackScrollView

我尝试设置currentPageIndicatorTintColor

if brightnes > 200
{
   backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
}
else
{
   backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
}

我在iPhone 5S(iOS 9.2)上运行此代码,代码工作没有问题,但是当我在iPhone 5(iOS 8.4)上运行此代码时,我会出错:

  

*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引4294967295超出   空数组'

的边界

我知道错误出现在这行代码中

backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()

我是使用print计算的。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

最可能的原因是您的网页控件的numberOfPages等于0,或currentPage无效(等于-1)。

您可以尝试以下

let pageControl = backScrollView.pageControl

if (pageControl.numberOfPages > 0 && pageControl.currentPage >= 0 && pageControl.currentPage < pageControl.numberOfPages) {
    if brightnes > 200 {
        pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
    } else {
        pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
    }
} else {
    print("Invalid pageControl state : numberOfPages = \(pageControl.numberOfPages); currentPage = \(pageControl.currentPage)")
}