【问题标题】:Swift - Expand tableview without Storyboard segueSwift - 没有 Storyboard segue 的扩展表视图
【发布时间】:2016-08-29 14:50:04
【问题描述】:

我正在尝试创建一个类似的表格视图,如下所示:

https://github.com/justinmfischer/SwiftyExpandingCells

我已经有一个包含内容的完整表格视图,包括一个过滤系统。当前的问题是我想实现相同的功能来扩展单元格并显示详细信息,不使用情节提要

示例代码(链接)使用故事板转场,但我想摆脱它,这样它基本上可以通过代码做同样的事情。我删除了背景的标签。只想通过单击 tableview 单元格首先获取标题和新控制器。

DetailViewController

class DetailVC: UIViewController {

var brand: Brand?

override func viewDidLoad() {
    super.viewDidLoad()

    self.setup()
}

func setup() {
    self.view.frame.origin.y = UIApplication.sharedApplication().statusBarFrame.size.height

    if let brand = self.brand {
        self.title = brand.name
    }
}
}

这部分需要改变

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.selectedCellFrame = tableView.convertRect(tableView.cellForRowAtIndexPath(indexPath)!.frame, toView: tableView.superview)
    self.selectedBrand = BrandManager.sharedInstance.brands[indexPath.row]

    self.performSegueWithIdentifier(.DetailVC , sender: nil)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    switch segueIdentifierForSegue(segue) {
        case .DetailVC:
            let vc = segue.destinationViewController as! DetailVC
                vc.brand = self.selectedBrand

            self.navigationController?.delegate = self
    }
}

【问题讨论】:

  • 我认为链接的 GitHub 代码本身就是您的答案。
  • 但是链接的代码正在使用故事板segue(请参阅有问题的代码)。我的问题是如何将其更改为非故事板 segue 版本:-)
  • 没有情节提要还是没有segue?
  • 没有情节提要。我在代码中做所有事情,但我想实现相同的功能(单击 tableview 行并将其从上到下展开)。
  • 我的答案中的代码是 github 项目的一部分,但由于故事板项目为 0%,它使用了我无法使用的故事板 segue。我只想在选择表格行时将视图控制器推到前台(见图)。我已经尝试了好几个小时了 :-( github.com/justinmfischer/SwiftyExpandingCells/blob/master/…

标签: ios swift


【解决方案1】:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        self.selectedCellFrame = tableView.convertRect(tableView.cellForRowAtIndexPath(indexPath)!.frame, toView: tableView.superview)
        self.selectedBrand =  BrandManager.sharedInstance.brands[indexPath.row]

        let vc = storyboard?.instantiateViewControllerWithIdentifier("DetailVc") as! DetailVC
        vc.brand = self.selectedBrand
        self.navigationController?.pushViewController(vc, animated: true)
     }//// add the storyboardID for the detailsVc as "DetailVc"

【讨论】:

  • 感谢您的回答,但它现在不是链接到情节提要吗?我不会以任何方式接触故事板:-)
猜你喜欢
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多