Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从另一个文档调用func/Can';t展开可选。无_Ios_Uitableview_Swift - Fatal编程技术网

Ios 如何从另一个文档调用func/Can';t展开可选。无

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:{

在Obj-c中,我有一种很好的方法来控制UISplitViewController中的didSelectRow 我可以简单地添加更多的按钮,并写下它们应该如何工作。这意味着去什么故事板,找到那里的场景,并显示给用户。在斯威夫特,我在做同样的事情时遇到了一些困难

以下是我在Obj-c中的内容

-(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(
)时尝试自动完成(,否?当我到达时不会发生任何情况(即使在操场上也不会)