【问题标题】:Error when passing data from one view controller to the other将数据从一个视图控制器传递到另一个视图控制器时出错
【发布时间】:2015-10-04 09:49:56
【问题描述】:

我目前正在 swift 2 中制作一个 rss 提要阅读器,我很难将 url 从我的 tableview 传递到我的 web 视图。当我在 tableviewcontroller 中打印我的 url 时,它会在 url 前面添加(可选)。但是,当它传入我的 webviewcontroller 时,它前面没有(可选)inf。这让我担心路上出了什么问题。

tableviewcontroller 将 url 传递给 webviewcontroller:

    override func tableView(tableView: UITableView,
    didSelectRowAtIndexPath indexPath: NSIndexPath){


        let webVC = WebViewController()
        webVC.entryUrl = entriesArray[indexPath.row]["link"]

        self.navigationController?.pushViewController(webVC, animated: true)
        print(entriesArray[indexPath.row]["link"])


}

webviewcontroller 接收数据并尝试使用它:

    var entryUrl:String!

override func viewDidLoad() {
    super.viewDidLoad()
    print(entryUrl)

    if entryUrl != nil {
    print(entryUrl)
    let requesturl: NSURL? = NSURL(string: entryUrl)

    let request = NSURLRequest(URL: requesturl!)

    web.loadRequest(request)

    }
    loadAddressURL()
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    UIApplication.sharedApplication().networkActivityIndicatorVisible = false
}


func loadAddressURL() {
    if let requestURL = NSURL(string: entryUrl) {
        let request = NSURLRequest(URL: requestURL)
        web?.loadRequest(request)
    }
}

我收到一条错误消息:

loadAddressURL()

说:

EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) on dispatch_semaphore_dispose

从 tableviewcontroller 打印日志: 可选(“http://www.google.com/”)

但是从 webviewcontroller 日志只打印: http://www.google.com/

然后: 致命错误:在展开可选值时意外发现 nil

为什么这不起作用,为什么 url 在 webviewcontroller 中不再是可选的?

【问题讨论】:

    标签: ios swift nsxmlparser swift2


    【解决方案1】:

    更改代码行以声明视图控制器的对象,如下所示。

    override func tableView(tableView: UITableView,
    didSelectRowAtIndexPath indexPath: NSIndexPath){
    
    
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    
        let webVC = mainStoryboard.instantiateViewControllerWithIdentifier("WebViewController") as! WebViewController
    
        webVC.entryUrl = entriesArray[indexPath.row]["link"]
    
        self.navigationController?.pushViewController(webVC, animated: true)
        print(entriesArray[indexPath.row]["link"])
      }
    

    别忘了在 storyBoard 中添加 viewController 的标识符。

    【讨论】:

    • 谢谢你,一千次谢谢你。你不知道我对此有多感激。你使我免于数周的头痛和不眠之夜。这完美解决了我的问题,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多