如何在swift中最初打开一个表视图到选定的详细视图

Posted

技术标签:

【中文标题】如何在swift中最初打开一个表视图到选定的详细视图【英文标题】:how to initially open a table view to a selected detail view in swift 【发布时间】:2015-07-10 21:54:33 【问题描述】:

我有一个导航控制器链接到一个标签栏控制器,该控制器链接到一个表格视图控制器。

我希望最初打开带有主题列表的表格视图。它当前在 Table View Controller 的详细视图上打开。

有没有办法做到这一点?使用 Swift 和 Xcode。 这是主控制器中的代码:

    override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    //self.navigationItem.leftBarButtonItem = self.editButtonItem()let path = NSBundle.mainBundle().pathForResource("TopicList", ofType: "plist")!
    let topicsDict = NSDictionary(contentsOfFile: path)!
    topics = topicsDict["topics"]! as! [NSDictionary] as! [[String: String]]
    keys = topicsDict.allKeys as! [String]

    //let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "insertNewObject:")
    //self.navigationItem.rightBarButtonItem = addButton
    if let split = self.splitViewController 
        self.detailViewController = split.viewControllers.last as? DetailViewController
    



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if segue.identifier == "showDetail" 
        if let indexPath = tableView.indexPathForSelectedRow()
            let object = topics[indexPath.row]
            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailItem = object
            controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true
        
    

【问题讨论】:

是的。在显示表格视图之前,您可以将详细视图控制器推入堆栈。 很抱歉,当我从标签栏控制器打开它时,我不明白该怎么做,也不知道如何为视图指定初始文件。 那么您的视图最初是如何设置的?一些代码会很好。 这是主控制器中的代码: 把它放在你的问题中 【参考方案1】:

我没有收到任何回复,但我确实通过在主控制器代码中为初始视图添加一个选项解决了这个问题:

    func configureView() 
    // Update the user interface for the detail item.
    if let detail: AnyObject = self.detailItem 
        if let label = self.detailDescriptionLabel 
            let dict = detail as! [String: String]
            let urlString = dict["url"]!

            let pdfLoc = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(urlString, ofType: "pdf")!)
            let request = NSURLRequest(URL: pdfLoc!)
            webView.loadRequest(request)


            let topic = dict["title"]!

            title = ""
            label.text = topic

            let bottomOffString = dict["bottom"]!
            if bottomOffString == "1" 
                buttonSwitch.enabled = false
                buttonSwitch.hidden = true
             else 
                buttonSwitch.setTitle("Details =>", forState: UIControlState.Normal)
            
        
     else 
        let urlString = "Quick Tips"
        let pdfLoc = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(urlString, ofType: "pdf")!)
        let request = NSURLRequest(URL: pdfLoc!)
        webView.loadRequest(request)

        title = "Quick Tips"
        //label.text = "Quick Tips"
        buttonSwitch.enabled = false
        buttonSwitch.hidden = true
    

【讨论】:

以上是关于如何在swift中最初打开一个表视图到选定的详细视图的主要内容,如果未能解决你的问题,请参考以下文章

如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图

如何重新加载UIPageViewController以在Swift中重新加载其视图

如何在 iOS Swift 中将选定的 tableView 单元格保存到数组中?

单击表格视图时如何显示选定的行?

IOS/Swift:将表视图中的对象传递给详细视图控制器

Swift 2.1 - 如何将集合视图单元格的索引行传递给另一个视图控制器