試圖從故事板跳轉出貨。我試圖把兩個UIViewControllers放入視圖中,並水平滾動。以編程方式在商店中添加兩個UICollectionViews
因此,首先,我去到應用程序委託
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds);
window?.makeKeyAndVisible()
var homeViewController = ViewController()
let shirtStore = ShirtStore()
let pantStore = PantStore()
homeViewController.shirtStore = shirtStore
homeViewController.pantStore = pantStore
window?.rootViewController = UINavigationController(rootViewController: ViewController())
return true
}
我不知道如果我裝的是第一homeViewController。
然後,在我的ViewController我:
import UIKit
class ViewController: UIViewController,
UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
let collectionViewShirts = UICollectionView()
let collectionViewPants = UICollectionView()
let collectionViewShirtsIdentifier = "CollectionViewShirtsCell"
let collectionViewPantsIdentifier = "CollectionViewPantsCell"
var shirtStore: ShirtStore!
var pantStore: PantStore!
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Hanger"
view.backgroundColor = UIColor.red
collectionViewShirts.delegate = self
collectionViewPants.delegate = self
collectionViewShirts.dataSource = self
collectionViewPants.dataSource = self
self.view.addSubview(collectionViewShirts)
self.view.addSubview(collectionViewPants)
collectionViewShirts.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewShirtsCell")
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if collectionView == self.collectionViewShirts {
let cellA = collectionView.dequeueReusableCell(withReuseIdentifier: collectionViewShirtsIdentifier, for: indexPath as IndexPath)
// Set up cell
cellA.backgroundColor = UIColor.blue
return cellA
}
else {
let cellB = collectionView.dequeueReusableCell(withReuseIdentifier: collectionViewPantsIdentifier, for: indexPath as IndexPath)
// ...Set up cell
cellB.backgroundColor = UIColor.red
return cellB
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
if(collectionView == collectionViewShirts)
{
return shirtStore.allShirts.count
}
else if (collectionView == collectionViewPants)
{
return 5//pantStore.allPants.count
}
else
{
return 5//shoeStore.allShoes.count
}
}
}
我的應用程序是由於零布局參數終止。我錯過了什麼。構建時沒有警告。
閱讀UICollectionView的文件和什麼異常告訴你;一個UICollectionView需要一個UIcollectionViewLayout;您需要通過適當的初始化程序提供一個。您還需要設置約束或收集視圖的框架。你即將發現不使用故事板是一項更多的工作,在我看來,通常不值得痛苦。 – Paulw11
一個明顯的問題是,您從未設置集合視圖的框架。使用正確的'init'方法。 – rmaddy
@ Paulw11找不到與故事板配合使用的故事板。我期望使用programatic swift來解決的主要用例是將視圖帶到前面(如放大圖片/細節模式類型的東西)。看起來謊言動畫和交換視圖將是編程快速的理想選擇。 – user1093111