Если вы посмотрите на ViewController.swift
из демо, включенного в ** UPCarouselFlowLayout **, вы увидите функцию scrollViewDidEndDecelerating
. Это срабатывает, когда прокрутка перестает двигаться, и ячейка становится «центральной» ячейкой.
В этой функции задана переменная currentPage
, и здесь меняются метки ниже вида коллекции.
Итак, это one место, чтобы попробовать то, что вы хотите сделать.
Добавьте две строки, как показано здесь ... когда прокрутка останавливается, вы создаете IndexPath
и ручным вызовом didSelectItemAt
:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let layout = self.collectionView.collectionViewLayout as! UPCarouselFlowLayout
let pageSide = (layout.scrollDirection == .horizontal) ? self.pageSize.width : self.pageSize.height
let offset = (layout.scrollDirection == .horizontal) ? scrollView.contentOffset.x : scrollView.contentOffset.y
currentPage = Int(floor((offset - pageSide / 2) / pageSide) + 1)
// add these two lines
let indexPath = IndexPath(item: currentPage, section: 0)
collectionView(self.collectionView, didSelectItemAt: indexPath)
}
Вы почти наверняка захотите добавить некоторую проверку ошибок и дополнительные функции (например, только вызов didSelect, если ячейка действительно изменилась, а не просто скользящая он немного, но остается на текущей ячейке), но это отправная точка.
причина в том, что rand генерирует целое число, тогда как вы сравниваете его со строкой.
Также
if rand == "1":
print("randomly generating")
elif rand1 == "1":
a1 = word[0]
a2 = word[1]
a3 = word[2]
a4 = word[3]
a5 = word[4]
a6 = word[5]
a7 = word[6]
a8 = word[7]
a9 = word[8]
a10 = word[9]
letters()
этот код кажется нелогичным, поскольку оба if всегда будут работать как rand. всегда равно 1 и elif никогда не побежит. все равно, что сказать что-то делать, а не делать это :) rip english
Попробуйте использовать
if rand == "1":
print("randomly generating")
if rand1 == "1":
a1 = word[0]
a2 = word[1]
a3 = word[2]
a4 = word[3]
a5 = word[4]
a6 = word[5]
a7 = word[6]
a8 = word[7]
a9 = word[8]
a10 = word[9]
letters()
Надеюсь, что это поможет