저는 IOS 개발에 익숙하지 않습니다.UICollectionView를 컨테이너에 프로그래밍 방식으로 추가하는 방법은 무엇입니까?
다음은 내가 을 구현하려는 것입니다 - 이것은 코드 jQuery과
를 추가, 두 번째 컨테이너에서 - UICollectionView 를 추가, 최초의 컨테이너에서 - 기본보기 에있는 두 개의 컨테이너를 가지고 나는 지금까지 해왔다.
홈페이지보기 :
class MainViewController:UIViewController {
let itemView:UIView = {
let itemContainerView = UIView()
itemContainerView.backgroundColor = UIColor.lightGray
let collectionView = CollectionViewController()
itemContainerView.addSubview(collectionView.view)
itemContainerView.translatesAutoresizingMaskIntoConstraints = false
return itemContainerView
}()
let tableView:UIView = {
let tableContainerView = UIView()
tableContainerView.backgroundColor = UIColor.gray
tableContainerView.translatesAutoresizingMaskIntoConstraints = false
return tableContainerView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
view.addSubview(itemView)
view.addSubview(tableView)
setupItemView()
setupTableView()
}
func setupItemView(){
itemView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
itemView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
itemView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 2/3).isActive = true
itemView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
}
func setupTableView() {
tableView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
tableView.leftAnchor.constraint(equalTo: itemView.rightAnchor).isActive = true
tableView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1/3).isActive = true
tableView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
}
}
CollectionViewController :
class CollectionViewController:UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
let cellId = "CellId"
var colView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
layout.itemSize = CGSize(width: 111, height: 111)
colView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
colView.delegate = self
colView.dataSource = self
colView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
colView.backgroundColor = UIColor.white
colView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(colView)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath)
cell.backgroundColor = UIColor.brown
return cell
}
}
가 내 메인 화면이 두 개의 컨테이너를 가지고 있지만 10 개 수집 세포를 볼 수 없었다 볼 수 있었다.
누구나 올바른 방향으로 안내 할 수 있습니까? 미리 감사드립니다.
이
내가 처음보기로 MainViewController을 설정 업데이트, 제대로 작동하고. 그러나 프로젝트에서 MainViewController는 초기보기가 아닙니다. 흐름은 다음과 같습니다. 1. 사용자 로그인 2. 버튼이있는 대시 보드가 나타납니다. 3. 버튼을 클릭하면 사용자가 MainViewController로 이동합니다.
여기 내 대시 보드 클래스 뷰가로드 된 후 어느 시점에서 reloadData
를 호출하는
class DashboardController: UIViewController{
let orderBtn:UIButton = {
let button = UIButton(type: .system)
button.backgroundColor = UIColor.init(red: 173/255, green: 184/255, blue: 255/255, alpha: 1)
button.layer.cornerRadius = 5
button.setTitle("Select Item" , for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(handleOrderNavigation), for: .touchUpInside)
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
view.addSubview(orderBtn)
setupOrderBtn()
}
func handleOrderNavigation() {
let mainViewController= MainViewController()
let mainViewNavController= UINavigationController(rootViewController: mainViewController)
self.present(mainViewNavController, animated: false, completion: nil)
}
}
나는 collectionView가'viewDidLoad'에서 올바른 프레임을 가지고 있는지 의심 스럽습니다. 자동 레이아웃을 사용하거나 나중에 프레임을 설정하십시오. CollectionViewController를'itemView'에 추가 할 때 프레임을 설정하지 않습니다. –
@JamesP 뷰를 슈퍼 뷰 (컨테이너)에 맞추기 위해 autolayout을 어떻게 사용할 수 있습니까? –