我的导航标题出现问题,并使用代码进行设置。
这是我的代码的结构:
Navigation Controller -> TableView -> UIScreen where i want to set the title.
这是我的代码:
TableViewController:
import UIKit
class ProductsTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UserCell.self, forCellReuseIdentifier: cellId)
}
let cellId = "cellId"
let products = [
"Happy Face",
"Sad Face",
"High Five",
"Angry Face",
"The Earth"
]
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return products.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! UserCell
let product = products[indexPath.row]
cell.textLabel?.text = product
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let buyProductViewController = BuyProductViewController()
let product = products[indexPath.row]
buyProductViewController.nameOfItem = product
buyProductViewController.navigationItem.title = product
performSegue(withIdentifier: "segue", sender: self)
}
}
class UserCell: UITableViewCell {
}
设置我的标题View Controller:
import UIKit
class BuyProductViewController:UIViewController {
var nameOfItem: String? {
didSet {
print(nameOfItem)
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
如果任何人能帮助我,我将非常感激,因为我非常沮丧并且已经在一周内完成了这项工作,而且只是遇到了堆栈溢出。
感谢。
答案 0 :(得分:0)
如果符合以下条件,这将对您有用: 1. ProductsTableViewController嵌入在UINavigationController中; 2.使用标识符" segue"是推。请注意,区别在于直接设置推送控制器的标题。 NavigationBar自动将显示的VC标题用作导航栏标题。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let buyProductViewController = BuyProductViewController()
let product = products[indexPath.row]
buyProductViewController.nameOfItem = product
buyProductViewController.title = product
performSegue(withIdentifier: "segue", sender: self)
}
答案 1 :(得分:0)
请检查您是否必须在BuyProductViewController
中设置标题:
import UIKit
class BuyProductViewController: UIViewController {
var nameOfItem: String? {
didSet {
print(nameOfItem)
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.title = nameOfItem
}
}