IGListKit/Examples/Examples-tvOS/IGListKitExamples/SectionControllers/DemoSectionController.swift

72 lines
2.1 KiB
Swift
Raw Normal View History

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import IGListKit
import IGListSwiftKit
import UIKit
final class DemoItem: NSObject {
let name: String
let controllerClass: UIViewController.Type
let controllerIdentifier: String?
init(name: String,
controllerClass: UIViewController.Type,
controllerIdentifier: String? = nil) {
self.name = name
self.controllerClass = controllerClass
self.controllerIdentifier = controllerIdentifier
}
}
final class DemoSectionController: ListSectionController {
var object: DemoItem?
override init() {
super.init()
inset = UIEdgeInsets(top: 0, left: 50, bottom: 10, right: 0)
}
override func numberOfItems() -> Int {
return 1
}
override func sizeForItem(at index: Int) -> CGSize {
let itemWidth = (collectionContext!.containerSize.width / 2) - inset.left
return CGSize(width: itemWidth, height: 100)
}
override func cellForItem(at index: Int) -> UICollectionViewCell {
guard let cell: DemoCell = collectionContext?.dequeueReusableCell(for: self, at: index) else {
fatalError()
}
cell.label.text = object?.name
return cell
}
override func didUpdate(to object: Any) {
self.object = object as? DemoItem
}
override func didSelectItem(at index: Int) {
if let identifier = object?.controllerIdentifier {
let storyboard = UIStoryboard(name: "Demo", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: identifier)
controller.title = object?.name
viewController?.navigationController?.pushViewController(controller, animated: true)
} else if let controller = object?.controllerClass.init() {
controller.title = object?.name
viewController?.navigationController?.pushViewController(controller, animated: true)
}
}
}