如何在 Swift 2 中使用 TableView 项目访问视图控制器?
Posted
技术标签:
【中文标题】如何在 Swift 2 中使用 TableView 项目访问视图控制器?【英文标题】:How can you use TableView items to access View Controllers in Swift 2? 【发布时间】:2016-03-20 20:33:34 【问题描述】:我正在尝试创建我的第一个 ios 应用,并计划发布到 App Store。这是一个选项卡式应用程序,TableView 嵌入到每个视图控制器中。这是我的一个选项卡式视图控制器的代码:
import Foundation
import UIKit
class AU: UITableViewController
var textArray = ["001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", "014", "015", "016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", "028", "029", "030", "031", "032", "033", "034", "035", "036", "037", "038", "039", "040", "041", "042" ]
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("AUCell") as UITableViewCell!
cell.textLabel?.text = textArray[indexPath.row]
return cell
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return textArray.count
所以,基本上,当用户点击textArray
中的一项时,我想切换到不同的视图控制器。我目前正在用 Swift 2 编写这个。
【问题讨论】:
【参考方案1】:嵌入在UITabBarController
中的每个UIViewController
都有一个对UITabBarController
及其tabBarController
属性的引用。要更改标签栏的选中视图控制器,设置标签栏的selectedViewController
:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if (indexPath.row == 0) // check the row that was selected
self.tabBarController?.selectedIndex = 0 // select a new tab on the tab bar, changing the selected view controller
【讨论】:
感谢您的回复,但是,我不确定这是否正是我想要的。我的意思是它会发送到另一个无法访问的视图控制器。我不是说在标签栏之间切换。另外,我继续尝试了您的代码,并且在尝试设置要指向的情节提要 ID 之后,我最终收到此错误:无法实例化 UIMainStoryboardFile 'Main' 的默认视图控制器 - 可能是指定的条目点未设置? 啊,我明白了,所以您想从情节提要或 xib 实例化视图控制器并预设或推送它。在这种情况下,您需要使用要显示的新 VC 在 self 上调用 pushViewController 或 presentViewController。【参考方案2】:首先在你的主故事板中创建几个 ViewController 并为它们提供 故事板 ID
创建名称列表:
let viewControllersNames = ["ViewController_1","ViewController_2","ViewController_3"]
在方法中:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
let vc = self.storyboard?.instantiateViewControllerWithIdentifier(self.viewControllersNames[indexPath.row])
self.navigationController?.pushViewController(vc!, animated: true)
祝你好运!
【讨论】:
感谢您提供代码!我已成功将其添加到我的应用程序中,但是,我不确定如何重定向到特定的视图控制器。在一般情况下,我在这里有点菜鸟,我只能弄清楚代码的含义。该应用程序成功运行,但是,我收到两个视图控制器(您提到要创建的两个)无法访问的错误。以上是关于如何在 Swift 2 中使用 TableView 项目访问视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中使用 MagicalRecord CoreData 删除 tableview 中的记录
如何在 Swift 中使用两个 TableView 设计动态布局
如何在 Swift 3 中使用 JSON 填充 TableView