Использование UIPageControl для отображения нескольких UICollectionViews - PullRequest
0 голосов
/ 09 мая 2019

- Я относительно новичок в разработке для iOS -

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

В настоящее время я пытаюсь сделать это, перечисляя каждую таблицу в виде кнопки, используя представление коллекции.

Таблицы разделены на две группы: внутри и снаружи.

Моя цель состоит в том, чтобы отделить внутренние таблицы и внешние таблицы с помощью элемента управления страницы.

Вот что у меня есть:

Страница 1: с 1 по 24 напоминает внутренние таблицы, а остальные напоминают внешние таблицы

Страница 2: Пусто

Класс 1: CollectionViewCell

class CollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var tableButton: UIButton!
}

Класс 2: TableNumSelection

class TableNumSelection: UIViewController, UIScrollViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var collectionView: UICollectionView!

@IBOutlet weak var typeLabel: UILabel!

let types = ["Inside", "Outside"]

let tables = [["#1", "#2", "#3", "#4", "#5", "#6", "#7", "#8", "#9", "#10", "#11", "#12", "#13", "#14", "#15", "#16", "#17", "#18", "#19", "#20", "#21", "#22", "#23", "#24"], ["#501", "#502", "#503", "#504", "#505", "#506", "#507", "#508", "#509", "#510", "#511", "#512", "#513", "#514", "#515", "#516", "#517", "#518", "#519", "#520", "#521", "#522", "#523", "#524", "#525", "#526", "#527", "#528", "#529", "#530", "#531"]]

var frame = CGRect(x:0,y:0,width:0,height:0)

override func viewDidLoad() {
    super.viewDidLoad()
    pageControl.numberOfPages = 2

    for i in 0..<tables.count {
        frame.origin.x = scrollView.frame.size.width * CGFloat(i)
        frame.size = scrollView.frame.size

        typeLabel.text = types[i]

        let numberOfItems = collectionView(collectionView, numberOfItemsInSection: i)
        print(numberOfItems)
    }

    scrollView.contentSize = CGSize(width: (scrollView.frame.size.width * CGFloat(tables.count)), height: scrollView.frame.size.height)
    scrollView.delegate = self
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width
    pageControl.currentPage = Int(pageNumber)
}

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 2
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if section == 0 {
        return tables[0].count
    }
    else {
        return tables[1].count
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell

    print(indexPath)
    let section = indexPath.section

    if section == 0 {
        cell.tableButton.setTitle(tables[0][indexPath.item], for: UIControl.State.normal)
        cell.tableButton.setTitleColor(UIColor.white, for: UIControl.State.normal)
        return cell
    } else {
        cell.tableButton.setTitle(tables[1][indexPath.item], for: UIControl.State.normal)
        cell.tableButton.setTitleColor(UIColor.white, for: UIControl.State.normal)
        return cell
    }
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print(indexPath.item)
}

У меня нет проблем с функциональностью прокрутки и смены страницы, поскольку все работает нормально:

Я пытался разбить таблицы на два раздела, хотя понятия не имею, как отобразить каждый раздел на отдельной странице (т. Е. Раздел 0 на странице 1 и раздел 1 на странице 2).

Нужно ли создавать два представления коллекции? Или я могу просто разделить по разделам, поскольку довольно неудачно попытался?

Иерархия сцен

Любое руководство будет высоко ценится.

...