Я выполняю segue (через раскадровку) из TableViewController (встроенного в NavigationController) в другой TableViewController. I.e Выбор ячейки и представление другого TableView, на котором я хотел бы отобразить текст выбранной ячейки в качестве следующего заголовка представлений.Невозможно установить название UINavigationItem программно при начальной загрузке
Я достигаю этого, однако, не на 100% правильно. При первом первоначальном выборе ячейки заголовок navigationItem не установлен. Только после того, как я вернусь назад, а затем снова перейду через эту же ячейку, это набор названий.
Первый сниппет - мой первый viewController, который я выбираю ячейку, где я устанавливаю переменную destinationViewControllers с названием выбранной ячейки.
var valueToPass:String?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow!;
let currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!;
valueToPass = currentCell.textLabel!.text
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "tripSegue") {
// initialize new view controller and cast it as your view controller
let viewController = segue.destinationViewController as! TripTableViewController
// setting the view controllers property that will store the passed value
viewController.passedValue = valueToPass
}
}
Второй фрагмент из пункта назначенияПрименение контролера устанавливает заголовок navigationItem.
var passedValue: String?
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = passedValue
}
Где valurEoPass получить набор в NavController –
@DavidBerry Я редактировал пост, чтобы отразить свой комментарий. См. Первый фрагмент – Vince
Я все еще не вижу, где вы устанавливаете значениеToPass (возможно, в didSelect ...)? –