Ios 如何从另一个文档调用func/Can';t展开可选。无
在Obj-c中,我有一种很好的方法来控制UISplitViewController中的didSelectRow 我可以简单地添加更多的按钮,并写下它们应该如何工作。这意味着去什么故事板,找到那里的场景,并显示给用户。在斯威夫特,我在做同样的事情时遇到了一些困难 以下是我在Obj-c中的内容Ios 如何从另一个文档调用func/Can';t展开可选。无,ios,uitableview,swift,Ios,Uitableview,Swift,在Obj-c中,我有一种很好的方法来控制UISplitViewController中的didSelectRow 我可以简单地添加更多的按钮,并写下它们应该如何工作。这意味着去什么故事板,找到那里的场景,并显示给用户。在斯威夫特,我在做同样的事情时遇到了一些困难 以下是我在Obj-c中的内容 -(void)initialSite:(int)viewId { UIViewController *viewController; switch (viewId) { case 0:{
-(void)initialSite:(int)viewId {
UIViewController *viewController;
switch (viewId) {
case 0:{
viewController = self.initital;
NSString *star = [NSString stringWithFormat:@"Velkommen til %@'s Bog",[data valueForKey:@"navn"]];
self.navigationItem.title = star;}
break;
case 1:{
viewController = self.startSide;
NSString *start = [NSString stringWithFormat:@"%@'s Bog, start-side",[data valueForKey:@"navn"]];
self.navigationItem.title = start;}
break;
}
[self showChildViewController:viewController];
}
-(void)showChildViewController:(UIViewController*)content {
if(topController != content) {
content.view.frame = [self.view bounds];
content.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[content.view removeFromSuperview];
[self.view addSubview:content.view];
content.view.autoresizesSubviews=YES;
[content didMoveToParentViewController:self];
topController = content;
}
}
现在在斯威夫特我也做了同样的事。。我认为这是可行的
func initialSite(viewID:Int)
{
var viewController : UIViewController?
switch (viewID)
{
case 0:
viewController = self.vc0
let star = "Velkommen til \(data1)'s Bog"
self.navigationItem.title = star
case 1:
viewController = self.vc1
let star = "\(data1)'s Bog, start-side"
self.navigationItem.title = star
default:
viewController = nil
// do nothing
}
self.showChildViewController(viewController!)
}
func showChildViewController(content:UIViewController){
if(topController != content) {
content.view.frame = self.view.bounds
content.view.autoresizingMask = UIViewAutoresizing.FlexibleWidth
content.view.removeFromSuperview()
self.view.addSubview(content.view)
content.view.autoresizesSubviews = true
content.didMoveToParentViewController(self)
topController = content;
}
}
我们称之为detailViewContainerController.swift
在我的hovedMenu.swift中,我需要调用didSelectRow中的func initialSite
我试着绕着它转了一圈,但答案总是一样的:“无法打开可选。无”
var dvcc: detailViewContainerController!
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
if let row = indexPath?.row {
self.dvcc.initialSite(Int())
}
}
我的错误在哪里?我尝试使用停止点。它在self.dvcc.initialSite(Int())处停止。您没有给dvcc赋值,所以基本上它是零,Swift无法打开它
与
var-dvcc:detailViewContainerController!
不同,您应该尝试类似var-dvcc=detailViewContainerController()
的操作,它给我一个错误=detailViewContainerController不能用()detailViewContainerController的init方法是什么?var-dvcc:detailViewContainerController!不,这一行只相当于objc中的detailViewContainerController*dvcc;
,您应该做的事情相当于dvcc=[detailViewContainerController new]
.xCode应该在键入var dvcc=detailViewContainerController(
)时尝试自动完成(,否?当我到达时不会发生任何情况(即使在操场上也不会)