2016-07-25 2 views
0

Я добавил UIButton на каждый tableViewCell, чтобы при нажатии на него он мог отправить пользователя в другой viewController в соответствии с текстом таблицы TableCell. Я уже использовал singleTon с shareManager для передачи значений между viewControllers, и я установил заголовок внутри функции «setSelected» для каждого tableViewcell.Передайте значение другому диспетчеру просмотра в соответствии с tableviewcell

override func setSelected(selected: Bool, animated: Bool) { 
SharingManager.sharedInstance.selectedCollege = self.CollegeLabel.text! 

} 

А потом я получить значение «selectedCollege» и установить заголовок на другом UIViewController.

override func viewDidAppear(animated: Bool) { 

self.title = SharingManager.sharedInstance.selectedCollege 
} 

Однако, он не устанавливает правильное название, так как заголовок не всегда соответствует тексту таблицы TableCell.

+0

для каждой ячейки добавить тег. теперь, когда вы нажимаете ячейку, получите свой тег, и вы узнаете, какую кнопку вы нажали. –

+0

Кажется вероятным, что 'setSelected' не вызывается при нажатии кнопки. Можете ли вы добавить печать в этот метод для проверки? –

+0

@PhillipMills Я сделал, и он распечатывает текст на всех таблицахViewCells. Почему вы думаете, что это происходит? –

ответ

0

Почему вы используете SharingManager? Если вы хотите передавать данные между ViewControllers, вы можете использовать метод prepareForSegue.

  1. добавить переменную экземпляра «titleOfSelectedRow» к контроллеру
  2. просмотра Создание SEGUE от исходного контроллера представления в контроллер вида назначения и установить идентификатор
  3. в вызове действия кнопки метод performSegueWithIdentifier и сохранить название выбранной строки в методе titleOfSelectedRow
  4. переопределить метод prepareForSegue. В этом методе вы можете получить доступ к destinationViewController и задать заголовок для значения переменной titleOfSelectedRow.
+0

Я не могу использовать segue между этими двумя viewControllers по сложной причине. –

+0

Для этого вы должны использовать segue.Если это кажется слишком сложным, вы должны переоценить свой подход – markedwardmurray

0

Использование prepareForSegue способ. 1) Установите в раскадровке переход 2) Сделайте что-то вроде этого:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let cntrl = segue.destinationViewController as? SecondViewController { 
     cntrl.publicVar = 'your value' 
    } 
} 

Также вы можете получить IndexOf выбранного Tableview строки. Пример:

let selectedIndex : NSIndexPath = self.tableView.indexPathForSelectedRow 

Другой способ - INIT ViewController с раскадровки ID и вызов функции pressent

0

Вы можете сделать что-то вроде этого, чтобы выполнить ваши потребности

Создайте переменную в контроллере представления вы хотите установить название

class SecondVC: UIViewController { 

//MARK: - Variables 

var title : String = "" 
....... 

теперь кнопкой мыши

override func setSelected(selected: Bool, animated: Bool) { 
    let title = self.CollegeLabel.text! 
    let secondVC = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as! GSMenuCategoryPriceVC 

    secondVC.title = title 
    self.navigationController?.pushViewController(secondVC, animated: true) 
} 
Смежные вопросы