0

UICollectionViewControllerプログラムで実装する簡単なアプリを作成しようとしていました。いくつかのセルを作成しましたが、ユーザーが特定のセルをクリックすると、別のコントローラーに移動する必要があります。しかし、ビューが次のView Controllerにプッシュされないという問題に直面しています。

ここにrootViewControllerをセットアップしますappDelegate

    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    let flow = UICollectionViewFlowLayout()
    let collectionView = ViewController(collectionViewLayout: flow)
    let navigation = UINavigationController(rootViewController: collectionView)
    window?.rootViewController = navigation

これが私が作成した方法ですUICollectionView

private let cellId = "cellid"
var viewController: ViewController?
override func viewDidLoad() {
    super.viewDidLoad()
    collectionView?.backgroundColor = .white
    collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
    // Do any additional setup after loading the view, typically from a nib.
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath)
    cell.backgroundColor = .red
    return cell
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 5
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: view.frame.width, height: 210)
}

ユーザーが特定のものをクリックしたときに制御する方法は次のとおりです

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

func pushView() {
    let controller = UINavigationController(rootViewController: DetailController())
    self.navigationController?.pushViewController(controller, animated: true)
}

関数も呼び出されますが、新しいView Controllerにプッシュされることはありません

4

3 に答える 3