2016-03-08 70 views
0

我有滾動視圖和pageContoll自定義視圖。Bug與設置currentPageIndicatorTintColor

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() 

我是通過使用print來計算的。

我做錯了什麼?

+1

「我知道錯誤是在這行代碼」我不知道你知道。你能證明這個嗎? – matt

回答

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)") 
} 
+1

謝謝!你是對的!在iOS 8之前設置currentPageIndicatorTintColor需要設置numberOfPages和當前頁面!那是胡說! – Dmitry