У меня есть контроллер вида (VC0) с 3 контейнерами в нем, являющийся «левым» контроллером вида (VC1), «правым» контроллером вида (VC2) и «центральным» контроллером вида коллекции (VC3).
VC0 встроен в контроллер навигации и настроена кнопка «влево» и «вправо».Центральный вид (VC3) будет перемещаться влево или вправо при нажатии каждой кнопки, открывая меню на VC1 или VC2 внизу.
В правом контроллере представления «меню» (VC2) я хочу кнопку «редактировать»,Когда нажата кнопка «Редактировать», я хочу, чтобы центральная панель «свернулась» и вернулась в исходное положение (которое не сдвигается влево или вправо) и чтобы видимость была переключена на все ячейки в представлении коллекции.контроллер (VC3).Цель состоит в том, чтобы поместить кнопку «Удалить» в каждую ячейку, которая станет видимой при нажатии кнопки «Редактировать», чтобы ячейки можно было удалять по одной, нажимая кнопку «Удалить» в каждой ячейке, и скрывать, когдаПользователь завершил удаление ячеек.
Я могу получить кнопку редактирования, чтобы свернуть центральное представление с помощью делегата, но я не уверен, как изменить видимость всех ячеек при нажатии кнопки редактирования,Я пытался использовать делегат, замыкание и комбинацию обоих, но мне не повезло.Вот что у меня есть:
//VC0 - HOLDS CONTAINER VIEWS
import UIKit
class ContainerViewController: UIViewController, RightPanelDelegate {
func hideLabel() {
let vc = CenterCollectionCV()
vc.hideLabel()
}
func collapsePanel() {
animateCenterPanelXPosition(targetPosition: 0, duration: 0.5, springDamping: 0.6) { _ in
self.currentState = .bothCollapsed
self.leftView.isHidden = true
self.rightView.isHidden = true
}
}
}
// VC2 - RIGHT CONTAINER
import UIKit
protocol RightPanelDelegate {
func collapsePanel()
func hideLabel()
}
class RightPanelVC: UIViewController {
var delegate: RightPanelDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonPressed(_ sender: Any) {
delegate?.collapsePanel()
delegate?.hideLabel()
}
}
//VC3 - CENTER CONTAINER
import UIKit
private let reuseIdentifier = "Cell"
class CenterCollectionCV: UICollectionViewController {
func hideLabel() {
// I'VE TRIED TO ACCESS THE CELL TO HIDE THE LABEL
// I'VE TRIED USING A CLOSURE IN THE CELL
// I'VE TRIED USING A DELEGATE IN THE CELL
// I CAN'T FIGURE OUT THE STEPS OR WORKFLOW REQUIRED
// COMMON ERROR IS "Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value" which I think will be because I'm not targeting an already instantiated cell but instead creating a new cell instance, eg:
// myCell = CenterCell()
// myCell.label.isHidden = true
// But all the other approaches I've tried haven't worked either.
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CenterCell
return cell
}
}
// COLLECTION VIEW CELL
import UIKit
class CenterCell: UICollectionViewCell {
@IBOutlet var label: UILabel!
}
Я бы хотел, чтобы конечный результат имел вид ячеек в контейнере, скрытый или показанный, когда кнопканажата в другом, несвязанном контейнере.
Любые советы или помощь будет принята с благодарностью, спасибо.