UITableView,uisplitviewcontroller - 一种管理detailview的方法?

时间:2014-09-25 09:02:46

标签: ios uitableview swift uisplitviewcontroller

我试图制作我的菜单"系统像我在ObjC中一样快速地工作。

到目前为止我构建了这个

这是我的detailViewContainerController

var initial : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var foesteTid : UIStoryboard = UIStoryboard(name: "FoersteTid", bundle: nil)

var vc0:UIViewController = UIViewController()
var vc1:UIViewController = UIViewController()
var vc2:UIViewController = UIViewController()
var vc3:UIViewController = UIViewController()
var topController: UIViewController = UIViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.configureView()

        self.vc0 = initial.instantiateViewControllerWithIdentifier("initial") as DetailViewController!
        self.addChildViewController(self.vc0)
        self.vc1 = initial.instantiateViewControllerWithIdentifier("startSide") as DetailViewController!
        self.addChildViewController(self.vc1)

        self.vc2 = foesteTid.instantiateViewControllerWithIdentifier("udstyr") as DetailViewController!
        self.addChildViewController(self.vc2)

}

func initialSite(viewID: Int) -> () {
    var viewController: UIViewController?
    let dataValue: AnyObject? = data?.valueForKey("navn")
    var start: String?

    switch viewID {
    case 0:
        viewController = self.vc0
        start = "Velkommen til \(dataValue)'s  Bog"
        println("data fra detailViewContainerController dataValue \(dataValue)")
    case 1:
        viewController = self.vc1
        start = "\(dataValue)'s  Bog, start-side"
        println("data fra detailViewContainerController dataValue2 \(dataValue)")
    default:
        break;
    }

    self.navigationItem.title = start!
    self.showChildViewController(viewController!)
}

这就是我认为我的问题所在,因为我在UITableView

中选择了一个项目,因为屏幕上没有任何内容
func showChildViewController(content: UIViewController){
        if(topController != content) {
            content.view.frame = self.view.frame
            content.view.autoresizingMask = UIViewAutoresizing.FlexibleWidth
            content.view.removeFromSuperview()
            self.view.addSubview(content.view)
            content.view.autoresizesSubviews = true
            content.didMoveToParentViewController(self)

            topController = content;
    }
}

在我的hovedMenu UITableview中我有这个

var dvcc = detailViewContainerController()
var data: AnyObject?
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell #\(indexPath.row)!")

    if let row = indexPath?.row {

        dvcc.data = data
        self.dvcc.initialSite(Int())

    }

}

这就是iPad模拟器中的样子!

Main Menu + detail view after selection of the main item on the uitableview from the main menu 当几乎相同的代码时,我让它在ObjC中运行...所以我不明白它为什么不工作

1 个答案:

答案 0 :(得分:0)

我几天前尝试做类似的事情,并设法使用XCode 6的Master Child Template然后使用segues,然后从tableView的didSelectRowAtIndexPath方法调用performSegueWithIdentifier。请检查我的blog post,它包含代码的链接。可能会对你有所帮助。

但是我看到你试图以编程方式做所有事情而不是依赖于Storyboard和Segues。它背后有什么理由吗?您的代码看起来并不像最新的iOS8 SDK那样做标准的方式。我相信如果你在Storyboard中创建viewcontrollers并适当地设置Segues,你应该能够轻松实现你想要的。

可以结帐我的blog-post和代码,看看它对你有用吗?如果您不理解代码的任何部分,请告诉我。