如果单击表 ViewController 的单元格,则打开 ViewController
Open a ViewController if a cell of a TableViewController is clicked
我正在尝试以编程方式创建一个视图控制器,如果单击 table 上的单元格,它将打开。我正在使用 table 视图,并用 xib.So 填充它,我被困在从第一个视图控制器中引用新视图控制器的位置,单击在table 通过 xib 查看。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "DViewController") as? DViewController
self.navigationController?.present(vc!, animated: true, completion: nil) //present della view successiva
vc?.name = data[indexPath.row].nome
}
此代码允许我单击该行,但单击时显示错误“致命错误:在展开可选值时意外发现 nil”显然是从 self.navigationController?.present(vc!...vc 值结果为零,我不明白为什么。
这是我想在单击时打开的 ViewController,它唯一要做的就是打开并将图块更改为我在另一个 ViewController 中单击的单元格的名称
class DViewController: UITableViewController {
var name = ""
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.title = "\(name)"
}
}
有人可以帮忙吗?我是 swift 的新手...ty
根据你提到的。您可以在没有 stroyboard 的情况下初始化您的 viewController,并且不会再发生崩溃。
let vc = DViewController()
如果你像你所做的那样展示你的视图控制器,它不会显示你想要的标题。
要显示标题,您可以通过两种方式:
使用推送样式显示您的新视图控制器:
let vc = DViewController()
navigationController?.pushViewController(vc, animated: true)
继续使用呈现样式,但您需要将视图控制器包装在其他导航控制器中:
let vc = DViewController()
let nav = UINavigationController(rootViewController: vc)
navigationController?.present(nav, animated: true)
我正在尝试以编程方式创建一个视图控制器,如果单击 table 上的单元格,它将打开。我正在使用 table 视图,并用 xib.So 填充它,我被困在从第一个视图控制器中引用新视图控制器的位置,单击在table 通过 xib 查看。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "DViewController") as? DViewController
self.navigationController?.present(vc!, animated: true, completion: nil) //present della view successiva
vc?.name = data[indexPath.row].nome
}
此代码允许我单击该行,但单击时显示错误“致命错误:在展开可选值时意外发现 nil”显然是从 self.navigationController?.present(vc!...vc 值结果为零,我不明白为什么。 这是我想在单击时打开的 ViewController,它唯一要做的就是打开并将图块更改为我在另一个 ViewController 中单击的单元格的名称
class DViewController: UITableViewController {
var name = ""
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.title = "\(name)"
}
}
有人可以帮忙吗?我是 swift 的新手...ty
根据你提到的。您可以在没有 stroyboard 的情况下初始化您的 viewController,并且不会再发生崩溃。
let vc = DViewController()
如果你像你所做的那样展示你的视图控制器,它不会显示你想要的标题。 要显示标题,您可以通过两种方式:
使用推送样式显示您的新视图控制器:
let vc = DViewController()
navigationController?.pushViewController(vc, animated: true)
继续使用呈现样式,但您需要将视图控制器包装在其他导航控制器中:
let vc = DViewController()
let nav = UINavigationController(rootViewController: vc)
navigationController?.present(nav, animated: true)