【问题标题】:How can you use TableView items to access View Controllers in Swift 2?如何在 Swift 2 中使用 TableView 项目访问视图控制器?
【发布时间】: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 编写这个。

【问题讨论】:

    标签: ios swift uitableview swift2


    【解决方案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)
    }
    

    祝你好运!

    【讨论】:

    • 感谢您提供代码!我已成功将其添加到我的应用程序中,但是,我不确定如何重定向到特定的视图控制器。在一般情况下,我在这里有点菜鸟,我只能弄清楚代码的含义。该应用程序成功运行,但是,我收到两个视图控制器(您提到要创建的两个)无法访问的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多