iPhone - отображение большого количества данных в одном UIView - PullRequest
0 голосов
/ 03 февраля 2010

Я пытаюсь отобразить большие объемы данных в UIView как подпредставление UIScrollView.Чтобы преодолеть ограничения памяти, связанные с огромными UIViews, я планирую, как только смещение scrollview достигнет максимального или минимального смещения, перерисовать представление с новыми данными либо с меньшим значением «x», если оно достигло минимума, либо Visaнаоборот, а затем увеличьте смещение вида до противоположности его текущей позиции (то есть MAX -> MIN и MIN -> MAX).Я попытался сделать это с помощью следующего кода.

- (void)scrollViewDidScroll:(UIScrollView *) scrollViewer {

 CGPoint p = scrollViewer.contentOffset;

 if(p.x==0){
     if(appDel.windownum>0){
         appDel.windownum--;
         [graphview setNeedsDisplay];
     }
 }

 if(p.x==1000){
     if(appDel.pcont>appDel.windownum*100){
         appDel.windownum++;
         [graphview setNeedsDisplay];
     }
 }
}

appDel.windownum - это ссылка на секцию графика, отображаемую в данный момент.Если он равен нулю, он отображает первые сто значений.Если он равен единице, следующей сотне и т. Д. После сброса этой переменной в appDelegate график перерисовывается с новым индексом значений, а scrolloffset сбрасывается.Однако, когда этот код запускается, программа падает.С и ошибка:

TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION

Сбой в симуляторе.Что я сделал не так?

XCode 3.2.1 Прошивка для iPhone 3.1.3

Ответы [ 2 ]

0 голосов
/ 04 февраля 2010

Я не вижу проблемы с вашим кодом в представленном виде (нужно больше подробностей), но у меня есть предложение по дизайну для проблемы отображения большого графика.

В последнее время я влюбился в использование таблиц на iPhone. Вы можете отобразить что-нибудь в таблицу, и они могут содержать любые представления. Похоже, вы отображаете большой, длинный график, и вы можете сделать это в таблице и позволить таблице обрабатывать отображение для вас.

Вам потребуется создать пользовательский UITableViewCell, который может отображать срез диаграммы. Он будет работать так же, как используемый вами вид, за исключением того, что на графике будет отображаться фиксированный диапазон. (Ваша модель данных должна быть в состоянии разбить данные на строки / диапазоны.) Затем отобразите ячейки без строк.

Таким образом, табличное представление обрабатывает рисование только тех частей диаграммы, которые отображаются немедленно. Это поможет как с памятью, так и с отзывчивостью. С точки зрения пользователя, он будет выглядеть как один произвольно длинный прокручиваемый граф.

0 голосов
/ 04 февраля 2010

Это сбивает симулятор. Произошла ошибка: TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...