设置 currentPageIndicatorTintColor 的错误
Bug with setting currentPageIndicatorTintColor
我有带有 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) 我变成了错误:
* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 4294967295 beyond
bounds for empty array'
我知道错误在这行代码
backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
I是用print计算出来的
我做错了什么?
最可能的原因是您的页面控件 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)")
}
我有带有 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) 我变成了错误:
* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 4294967295 beyond bounds for empty array'
我知道错误在这行代码
backScrollView.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
I是用print计算出来的
我做错了什么?
最可能的原因是您的页面控件 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)")
}