ios - 通过快速单击 TableView 单元格转到 ViewController

标签 ios swift xcode

有一个类MenuViewController,里面记录了表格中记录的数组:

import Foundation
import UIKit

class MenuViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var menuTableView: UITableView!

let myTitle = ["Помощь", "Информация", "Поддержка"]


override func viewDidLoad() {
    super.viewDidLoad()


    menuTableView.delegate = self
    menuTableView.dataSource = self
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myTitle.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = menuTableView.dequeueReusableCell(withIdentifier: "MenuCell") as! MenuTableViewCell
    cell.labelText.text = myTitle[indexPath.row]
    return cell
}
}

需要在里面写什么才能转到Info Controller?

最佳答案

我假设您正在使用 Storyboard。首先,您需要在两个 View Controller 之间建立某种连接。您可以通过设置“segue”来做到这一点。您按住 ctrl 并单击从第一个 View Controller 拖动到第二个 View Controller 。它看起来像这样:

Creating Segue

当你松开鼠标时,你会看到:

Creating Segue 2

点击显示。现在您将创建一个 segue。 现在你需要给它命名。因此,单击 Storyboard 中显示的 segue。它基本上只是一个从菜单 View Controller 到信息 View Controller 的箭头。在右侧你会看到一个你可以命名它的地方(给它一个标识符):

Creating Segue 3

现在……您已经完成了 Storyboard中需要做的所有事情。现在在 MenuViewController 的实际代码中,您需要关联单击 tableviewcell。您可以使用委托(delegate)方法 didSelectRowAt 来执行此操作。

我看到您已经使用以下行设置了委托(delegate): menuTableView.delegate = self

这确保了只要用户点击一行,就会调用 didSelectRowAt

所以现在您要做的是编写代码来执行 segue:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.performSegue(withIdentifier: "YourSegueName", sender: self)
}

注意: 以下是有关与 tableview 行交互的更多信息: How to detect tableView cell touched or clicked in swift

这里是关于转场的更多信息: IOS - How to segue programmatically using swift

您还可以进行更多自定义...例如通过 segue 将数据传递到下一个 View Controller 。就是这样: Pass data through segue

关于ios - 通过快速单击 TableView 单元格转到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819575/

相关文章:

ios - 将 MKMapView 缩放到 MKAnnotationView 的框架

ios - 用于 MobileConfig 文件的 OS X 终端中的 XML 解析

ios - objective-c :没有@interface声明选择器错误

swift - 在搜索栏中使用搜索后如何保存复选标记?

ios - 与旧款 iPhone 相比,iPhone X 上的按钮图像颜色不同

swift - Leaf & Vapor 3 - 无法在 View 中加载 css 和图像

ios - Xcode iOS 应用程序在启动时崩溃:无法创建 lldb_private::Process

objective-c - 将 JSON 结果解析为 NSString 或 RestKit 中类似的 "primitive"数据类型

ios - Xcode 9,我的 NSLog() 去哪儿了?未在 Xcode 控制台或 Console.app 中显示

objective-c - 错误消息无法启动 + IOS/cordova