Ячейка UITableView обновляет проблему на перестроении

Я бы сделал это следующим образом:

library(lubridate)

#get df1...

#convert hr to something more useable with...
df1$hr <- hour(hm(df1$hr))

ggplot(df1, aes(x = hr, y = Val, color = Date)) + geom_line()

Graph of Val vs Time of Day grouped by Date

или, если вы специально хотите "%H:%M" или похож на ваш х Формат времени метки оси:

ggplot(df1, aes(x = hr, y = Val, color = Date)) + geom_line() + scale_x_continuous(breaks = seq(0, 23, 1), labels = paste(seq(0, 23, 1), "00", sep = ":"))

Graph of Val vs Time of Day grouped by Date with x labels as hour:minute

Объяснение : мне никогда не было легко работать со временем и датами , так что если вы можете немного упростить задачу, сделайте это.

В вашем случае вас интересует только час дня, поэтому минуты излишни. Чтобы извлечь только час из вашего времени как символьный тип данных, есть несколько способов, но используя lubridate, вы можете использовать hm(df1$hr), который преобразует «10:00» в "10H 0M 0S", который является типом данных периода, от которого вы просто хотите час, который вы можете сделать с hour(), который даст вам 10 в качестве числового типа данных.

Так как один строчный hour(hm(df1$hr)) преобразует «10:00» в 10, то ggplot может просто отобразить «Val» против «hr» как числовые типы данных вместо временных или символьных типов данных, которые я считаю более легкое задание.

5
задан h4xxr 8 May 2009 в 22:40
поделиться

2 ответа

Понятно !!

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

Я поместил вызов reloadData в отдельный метод:

- (void)refreshDisplay:(UITableView *)tableView {
[tableView reloadData]; }

, а затем вызвал его с задержкой 0,5 секунды:

[self performSelector:(@selector(refreshDisplay:)) withObject:(tableView) afterDelay:0.5];

И этого не произошло. t вылетает и вместо этого обновляется! Задержка в 0,5 секунды едва заметна и вполне приемлема.

Надеюсь, это поможет кому-то другому!

Спасибо

Фил

4
ответ дан 14 December 2019 в 13:46
поделиться

Взгляните на ссылку для UITableViewDelegate. Если вы назначаете своему UITableView делегата, вы можете использовать его методы для обработки уведомлений о том, что ваше табличное представление что-то сделало. Вы, вероятно, будете использовать один из

tableView:didEndEditingRowAtIndexPath:
или
tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:
для этого.
2
ответ дан 14 December 2019 в 13:46
поделиться