Я борется с переключением viewControllers.Невозможно вызвать tableViewController
я получил следующее раскадровку:
левый верхний VC является Войти VC, который толкает вид на MainViewController (внизу слева) с помощью модального Segue.
Это прекрасно работает через:
self.performSegueWithIdentifier("MainSegue", sender: self)
MainViewController Саваоф «Меню» бар элемент, который при нажатии на инициирующее управление какао SSASideMenu и представляет LeftSideMenu VC. Это также отлично работает.
LeftSideMenu VC имеет 2 пункта меню («домашний» и «заказ»). Пункт «home» вернется в MainViewController (пример 0 ниже - отлично работает). Элементу «order» необходимо представить ItemTableViewController (верхний правый), который представляет собой, в основном, tableVC с ячейкой прототипа, встроенной в контроллер навигации.
Случай 1 ниже, где все это идет не так:
func tableView(..........) {
tableView.deselectRowAtIndexPath(indexPath,animated: true)
switch (indexPath.row) {
case 0:
sideMenuViewController?.contentViewController =
UINavigationController(rootViewController: MainViewController())
sideMenuViewController?.hideMenuViewController()
break
case 1:
sideMenuViewController?.contentViewController =
UINavigationController(rootViewController: ItemTableViewController())
sideMenuViewController?.hideMenuViewController()
break
}
}
Таким образом, случай 1 приведет к Func Tableview из ItemTableViewController называться:
func tableView(tableView: UITableView, cellForRowAtIndexPath ...) {
let cellIdentifier = "MenuItemTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! MenuItemTableViewCell!
let item = items[indexPath.row]
cell.cellTitle.text = item.name // **cell is always nil**
....
клетка всегда равна нулю.
Я пытался зарегистрировать класс (хотя я не должен, так как я использую раскадровку) с:
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! MenuItemTableViewCell!
if cell == nil {
tableView.RegisterClass(MenuItemTableViewCell.self, forCellReuseIdentifier: cellIdentifier)
cell = MenuItemTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
let item = items[indexPath.row]
cell.cellTitle.text = item.name // **cell is still nil**
Я также пробовал с Segue, но получить не существует переход на ошибках LeftSideMenu (он существует с правильным CellIdentifier).
В нижней строке я не могу вызвать ItemTableViewController (верхний правый столVC)!
Любые подсказки, пожалуйста?
Я использовал это первоначально. Ошибка была «неспособна деактивировать ячейку с идентификатором MenuItemTableViewCell - должна зарегистрировать nib или класс для идентификатора или подключить ячейку прототипа в раскадровке». Я использую раскадровку с правильным идентификатором, но – Polis
Но вы видите, что ошибка _helpful_. Вы были неправы, чтобы скрыть это от себя, изменив звонок.:) Это говорит о том, что ваша связь между контроллером табличного представления и раскадрой неправильная. Я не знаю, что вы сделали неправильно, но это то, что вам нужно исправить. Возможно, вы забыли установить пользовательский класс контроллера табличного представления в раскадровке. Или, возможно, вы получили неправильный экземпляр контроллера табличного представления - т. Е. Вы создали новый, а не получаете экземпляр из раскадровки. Это проблема, но вы можете ее увидеть и исправить. – matt
Как я могу получить экземпляр раскадровки tableVC, хотя, если он никогда не был создан ранее? Это первый вызов VC в приложении. – Polis