2016-03-08 2 views
0

У меня есть пользовательский вид с scrollview и pageContoll.Ошибка с настройкой 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() 

Я рассчитываю используя печать.

Что я делаю неправильно?

+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

Смежные вопросы