我试图制作我的菜单"系统像我在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模拟器中的样子!
当几乎相同的代码时,我让它在ObjC中运行...所以我不明白它为什么不工作
答案 0 :(得分:0)
我几天前尝试做类似的事情,并设法使用XCode 6的Master Child Template然后使用segues,然后从tableView的didSelectRowAtIndexPath方法调用performSegueWithIdentifier。请检查我的blog post,它包含代码的链接。可能会对你有所帮助。
但是我看到你试图以编程方式做所有事情而不是依赖于Storyboard和Segues。它背后有什么理由吗?您的代码看起来并不像最新的iOS8 SDK那样做标准的方式。我相信如果你在Storyboard中创建viewcontrollers并适当地设置Segues,你应该能够轻松实现你想要的。
可以结帐我的blog-post和代码,看看它对你有用吗?如果您不理解代码的任何部分,请告诉我。