2014-09-23 103 views
0

我一直在努力一段时间。我想提出一个模态的viewController,但每次我这样做我得到以下错误:目前viewController在另一个故事板快速

libswiftCore.dylib`swift_dynamicCastClassUnconditional: 
0x10f7d57d0: pushq %rbp 
0x10f7d57d1: movq %rsp, %rbp 
0x10f7d57d4: testq %rdi, %rdi 
0x10f7d57d7: je  0x10f7d580e    ; swift_dynamicCastClassUnconditional + 62 
0x10f7d57d9: movabsq $-0x7fffffffffffffff, %rax 
0x10f7d57e3: testq %rax, %rdi 
0x10f7d57e6: jne 0x10f7d580e    ; swift_dynamicCastClassUnconditional + 62 
0x10f7d57e8: movq 0xae741(%rip), %rax  ; swift::ISAMask 
0x10f7d57ef: andq (%rdi), %rax 
0x10f7d57f2: nopw %cs:(%rax,%rax) 
0x10f7d5800: cmpq %rsi, %rax 
0x10f7d5803: je  0x10f7d581d    ; swift_dynamicCastClassUnconditional + 77 
0x10f7d5805: movq 0x8(%rax), %rax 
0x10f7d5809: testq %rax, %rax 
0x10f7d580c: jne 0x10f7d5800    ; swift_dynamicCastClassUnconditional + 48 
0x10f7d580e: leaq 0x332fd(%rip), %rax  ; "Swift dynamic cast failed" 
0x10f7d5815: movq %rax, 0xae5cc(%rip)  ; gCRAnnotations + 8 
0x10f7d581c: int3 
0x10f7d581d: movq %rdi, %rax 
0x10f7d5820: popq %rbp 
0x10f7d5821: retq 
0x10f7d5822: nopw %cs:(%rax,%rax) 

这是对下面一行:

let showItemVc = showItemStoryboard.instantiateViewControllerWithIdentifier("ShowItemViewController") as ShowItemViewController 

didSelectRowAtIndexPath方法

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if segmentedControl?.selectedSegmentIndex == 0 { 


     let showItemStoryboard = UIStoryboard(name: "ShowItemStoryboard", bundle: nil) 
     let showItemVc = showItemStoryboard.instantiateViewControllerWithIdentifier("ShowItemViewController") as ShowItemViewController 

     self.presentViewController(showItemVc, animated: true, completion: nil) 
    } 
} 

它的工作原理如果我只是改变

as ShowItemViewController 

as UIViewController 

但后来我不能推值的ShowItemViewController,什么是这里的问题?

showItemViewController

import UIKit 

class ShowItemViewController: UIViewController, UITableViewDelegate { 

    @IBOutlet var pageControl: UIPageControl? 
    @IBOutlet var tableView:UITableView? 
    var userId: NSString? 
    var itemId: NSString? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var no = (UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("itemCancel:"))) 

     self.navigationItem.leftBarButtonItem = no 


     var hiddenButton = (UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: nil, action: nil)) 

     self.navigationItem.rightBarButtonItem = hiddenButton 


     println(userId) 


     self.tableView?.registerNib(UINib(nibName: "ImagePageViewCell", bundle: nil), forCellReuseIdentifier: "ImagePageViewCell") 

     pageControl = UIPageControl() 
     pageControl?.frame = CGRectZero 
     pageControl?.currentPage = 0 
     pageControl?.numberOfPages = 3 
     pageControl?.tintColor = UIColor.whiteColor() 
     pageControl?.userInteractionEnabled = false 
     self.navigationItem.titleView = pageControl? 




    } 

} 
+0

您是否在故事板场景中设置了视图控制器的自定义类? – Paulw11 2014-09-23 22:22:31

+0

请发布您的ShowItemViewController的标题 – derdida 2014-09-23 22:25:06

+0

iøve现在添加它 – gamerChristian 2014-09-23 22:31:44

回答

2

如果你实例化一个UINavigationController有你ShowItemViewController里面,你需要到该视图控制器的引用。 UINavigationController有一个topViewController属性,该属性表示添加到它的第一个子项目。如果您想填充ShowItemViewController中的数据,并且它嵌入到导航控制器中,则这是您需要的项目。

let showItemStoryboard = UIStoryboard(name: "ShowItemStoryboard", bundle: nil) 
let showItemNavController = showItemStoryboard.instantiateViewControllerWithIdentifier("ShowItemViewController") as UINavigationController 
let showItemVC = showItemNavController.topViewController as ShowItemViewController 
// Set the properties in your showItemVC 
presentViewController(showItemNavController, animated: true, completion: nil) 

您也应该检查let S被继续之前做if let XXX = YYY as? ZZZ {}舞蹈其实成功,否则你会得到一个运行时错误。

相关问题