У меня есть контроллер сплит-представлением, и когда пользователь щелкает ячейку в представлении таблицы, приложение отображает контроллер просмотра с представлением контейнера и элемент управления сегментом для переключения между двумя диспетчерами просмотра детей.Невозможно переупорядочить ячейки коллекции View
Первый контроллер детского вида - это контроллер просмотра коллекции. В каждой ячейке Collection View есть слово.
мнение выглядит следующим образом:
добавить контроллер представления ребенка программно с помощью этого кода (от Detail View Controller, контейнер подвиды):
override func viewDidLoad() {
self.currentViewController = self.storyboard?.instantiateViewController(withIdentifier: "WordCollectionViewControllerID")
(self.currentViewController as! WordCollectionViewController).text = self.text
self.currentViewController?.view.translatesAutoresizingMaskIntoConstraints = false
self.addChildViewController(self.currentViewController!)
self.addSubview(subView: self.currentViewController!.view, toView: self.textContainerView)
self.currentViewController?.view.layoutIfNeeded()
self.currentViewController?.didMove(toParentViewController: self)
super.viewDidLoad()
}
func addSubview(subView: UIView, toView parentView: UIView) {
parentView.addSubview(subView)
var viewBindingsDict = [String: AnyObject]()
viewBindingsDict["subView"] = subView
parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[subView]|", options: [], metrics: nil, views: viewBindingsDict))
parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[subView]|", options: [], metrics: nil, views: viewBindingsDict))
}
Здесь представляет собой код для переключения между двумя видами детей с сегментированным управлением:
@IBAction func changeChildViewController(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
let newViewController = self.storyboard?.instantiateViewController(withIdentifier: "WordCollectionViewControllerID")
(newViewController as! WordCollectionViewController).text = self.text
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
cycle(from: self.currentViewController!, to: newViewController!)
self.currentViewController = newViewController
print("Reorder")
} else {
let newViewController = self.storyboard?.instantiateViewController(withIdentifier: "NavigationControllerEditTextViewControllerID")
(newViewController?.childViewControllers[0] as! EditTextViewController).text = self.text
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
cycle(from: self.currentViewController!, to: newViewController!)
self.currentViewController = newViewController
print("Edit")
}
}
func cycle(from: UIViewController, to: UIViewController) {
from.willMove(toParentViewController: nil)
self.addChildViewController(to)
self.addSubview(subView: to.view, toView: self.textContainerView)
to.view.layoutIfNeeded()
from.view.removeFromSuperview()
from.removeFromParentViewController()
to.didMove(toParentViewController: self)
}
Чтобы иметь возможность изменять порядок клетки I внедрил этот метод для моего пользовательского класса CollectionViewController:
override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
// Swap values if sorce and destination
let change = textArray[sourceIndexPath.row]
textArray.remove(at: sourceIndexPath.row)
textArray.insert(change, at: destinationIndexPath.row)
// Save changes in Core Data
text?.reordered_text = textArray.joined(separator: " ")
(UIApplication.shared.delegate as! AppDelegate).saveContext()
collectionView.reloadData()
}
Проблема заключается в том, что, когда я нажимаю Table Vi Ce и приложение показывает Container View с Collection View Controller я не могу изменить порядок ячеек, и, чтобы это сделать, мне нужно изменить Child (с помощью Segmented Control), а затем вернуться к представлению коллекции.
Как я могу решить эту проблему?
Извини, если я сделал некоторые ошибки с языком, я итальянским – ale00
Что вы делаете на вашем Tableview -didSelect? – Aks
Я ничего не делаю на tableView-didSelect @Aks – ale00