选择特定的 UITableViewCell 时如何进行推送转场
How to make a push segue when a specific UITableViewCell is selected
我正在开发我的第一个 iOS 应用程序和 swift 的新学生。
一切正常,但我无法弄清楚如何从特定单元格转到第三个视图控制器。我有一个 IOS UITableView
,其中包含三个部分,共有 (44) 个单元格。点击时所有单元格都会转到一个标题为 DetailVC
的单元格:showProductDetai
,这很好。我遇到的问题是,我只需要 (1) UITableView
中第 0 行第 5 行中的特定单元格即可转到它自己的 ViewController
,我在其中标题为:second view controller
而不是正常的 showProductDetail
VC。是否有一种智能方法可以使 tableView
的第 0 节第 5 行中的特定单元格在被选中时转到第二个视图控制器?
这是我当前可用的代码。我将如何编写代码来进行更改?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ProductCell", for: indexPath) as! ProductTableViewCell
// Configure the cell...
let productLine = productLines[indexPath.section]
let products = productLine.products
let product = products[indexPath.row]
cell.product = product
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let productLine = productLines[section]
return productLine.name
}
// Mark: UITableViewDelegate
var selectedProduct: Product?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let productLine = productLines[indexPath.section]
let product = productLine.products[indexPath.row]
selectedProduct = product
performSegue(withIdentifier: "ShowProductDetail", sender: nil)
}
// Mark: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "ShowProductDetail" {
let DetailVC = segue.destination as! DetailViewController
DetailVC.product = selectedProduct
}
}
看到我在这里做了什么吗?您可以使用 indexPath
参数获取用户触摸的部分和行,然后您可以设置您的程序化转场。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if ((indexPath.section == 0) && (indexPath.row == 5)) {
performSegue(withIdentifier: "GoToSecondViewController", sender: nil)
} else {
let productLine = productLines[indexPath.section]
let product = productLine.products[indexPath.row]
selectedProduct = product
performSegue(withIdentifier: "ShowProductDetail", sender: nil)
}
}
为所需的部分和行编写 segue 代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 && indexPath.row == 5 {
//Perform Segue
} else {
//Rest of the functionality
}
}
确保您已连接正确的 Sugue 并在 Storyboard 中提供正确的标识符。
你不需要写prepare
Segue方法
我正在开发我的第一个 iOS 应用程序和 swift 的新学生。
一切正常,但我无法弄清楚如何从特定单元格转到第三个视图控制器。我有一个 IOS UITableView
,其中包含三个部分,共有 (44) 个单元格。点击时所有单元格都会转到一个标题为 DetailVC
的单元格:showProductDetai
,这很好。我遇到的问题是,我只需要 (1) UITableView
中第 0 行第 5 行中的特定单元格即可转到它自己的 ViewController
,我在其中标题为:second view controller
而不是正常的 showProductDetail
VC。是否有一种智能方法可以使 tableView
的第 0 节第 5 行中的特定单元格在被选中时转到第二个视图控制器?
这是我当前可用的代码。我将如何编写代码来进行更改?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ProductCell", for: indexPath) as! ProductTableViewCell
// Configure the cell...
let productLine = productLines[indexPath.section]
let products = productLine.products
let product = products[indexPath.row]
cell.product = product
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let productLine = productLines[section]
return productLine.name
}
// Mark: UITableViewDelegate
var selectedProduct: Product?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let productLine = productLines[indexPath.section]
let product = productLine.products[indexPath.row]
selectedProduct = product
performSegue(withIdentifier: "ShowProductDetail", sender: nil)
}
// Mark: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "ShowProductDetail" {
let DetailVC = segue.destination as! DetailViewController
DetailVC.product = selectedProduct
}
}
看到我在这里做了什么吗?您可以使用 indexPath
参数获取用户触摸的部分和行,然后您可以设置您的程序化转场。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if ((indexPath.section == 0) && (indexPath.row == 5)) {
performSegue(withIdentifier: "GoToSecondViewController", sender: nil)
} else {
let productLine = productLines[indexPath.section]
let product = productLine.products[indexPath.row]
selectedProduct = product
performSegue(withIdentifier: "ShowProductDetail", sender: nil)
}
}
为所需的部分和行编写 segue 代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 && indexPath.row == 5 {
//Perform Segue
} else {
//Rest of the functionality
}
}
确保您已连接正确的 Sugue 并在 Storyboard 中提供正确的标识符。
你不需要写prepare
Segue方法