![](/img/trans.png)
[英]Present storyboard ViewController from another ViewController
[英]present viewController in another storyboard swift
我已經掙扎了一段時間。 我試圖以模態形式呈現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
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,這里的問題是什么?
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?
}
}
如果要實例化其中包含ShowItemViewController
的UINavigationController
,則需要對該視圖控制器的引用。 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)
您還應該通過執行if let XXX = YYY as? ZZZ {}
檢查let
實際上是否成功if let XXX = YYY as? ZZZ {}
在繼續操作之前if let XXX = YYY as? ZZZ {}
跳舞,否則會出現運行時錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.