Всем доброго дня суток. Задача такая что нужно сделать автоскроллинг к определенному row. У меня TableView там указано время и если это время совпадает с currentTime нужно скролить до этого момента.
Я использую tableView.scrollToRowAtIndexPath, но я не могу определить какой именно мне нужен indexPath что бы скролить до этого момента, так как этот row не показывается пока я до него сам не доскролю. Пока не знаю что делать, и как лучше сделать. Пытаюсь сделать это целый день. Спасибо за помощь!
Table View (скроллинг к indexPath)[DONE]
Вы очевидно стоите таблицу на основе массива с ками-то значениями! у вас есть нужно значение, вам просто необходимо найти его индекс в этом массиве и скролить таблице до
indexPath = IndexPath(section: 0, row: //тут индекс вашего элемента )
Спасибо за отклик, да Den так и есть у меня есть массив с элементами, но я не знаю значение индекса до тех пор пока не доскролю до них, вот с этим не могу разобраться( Не знаю как узнать его indexPath.row
Можешь!
IndexPath для таблицы состоит из двух частей: номер секции и номер ряда!
Номер секции если ты не указывал, по дефолту 0.
А номер ряда в таблице равен индексу нужного тебе элемента в массиве на основе которого ты строишь таблицу!
Тебе нужна функция(я за тебя код писать не буду, а только объясню!)
Функция проходит по всем элементам массива на основе которого ты строишь таблицу и сравнивает этот каждый элемент(а это у тебя дата) с текущей датой!и если они совпадают, то возвращает индекс этого элемента!
И вот тебе и останется проскролить таблицу до результата этой функции!
Понятно?
добрый день, пробую по вашему методу получаю нужную дату , но не могу вывести indexPath.row ,
for item in timeArray {
if item == hourCurrent {
print(timeArray[indexPath.row])
}
}
timeArray[indexPath.row] - не выдает нужный indexPath
Не могли бы вы посмотреть что я не так делаю. Спасибо
У массива нет indexPath. Вы должны получить порядковый номер вашего элемента в массиве, через метод enumerated к примеру
Давайте с вами разберем что вы написали:
//тут просто: для всех item в массиве timeArray
for item in timeArray {
// если элемент item равен hourCurrent то
if item == hourCurrent {
// вы тут хотите вывести индекс элемента, но делаете непонятно что!
print(timeArray[indexPath.row])
// вот здесь вам нужно почитать как найти индекс элемента в массиве!
let index = // то что вы прочитали и поняли
А вод дальше уже можно использовать tableView.scrollToRowAtIndexPath, так как вы уже можете посчитать индекс:
спасибо я уже сделал, у меня получилось. Я пронумеровал все элементы массива, потом сравнил их и получил index.
func getIndexFromArray() {
for (index,item) in timeArray.enumerated() {
if hourCurrent == item {
print(index)
}
}
}