objective-c - 将 tabelview indexPath.row 作为字符串传递给 VC WebView

标签 objective-c swift tableview

我有一个 TableViewController,我试图将其通过 URL 传递到另一个 ViewController 上的 WebView

我正在重写下面的函数,如果我将 URL 设为静态,该函数就会起作用,正如您在注释 let newsLink 常量中看到的那样

let newsLink = "http://www.stuff.co.nz/business/industries/69108799/Kirkcaldie-Stains-department-store-to-become-David-Jones"

但是,下面的代码从 indexPath.row 中提取 URL 时,由于某种原因失败并传递了 nil

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

        let newsLink = (posts.objectAtIndex(indexPath.row).valueForKey("link") as! String)
        //let newsLink = "http://www.stuff.co.nz/business/industries/69108799/Kirkcaldie-Stains-department-store-to-become-David-Jones"
        println(newsLink)

        let newsWebViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("idNewsWebViewController") as! NewsWebViewController

        newsWebViewController.newsURL = NSURL(string: newsLink)

        showDetailViewController(newsWebViewController, sender: self)

    }

如果我 println() 下面的内容,我会得到与我在测试 let newsLink 常量中硬编码的 URL 完全相同的输出

println(posts.objectAtIndex(indexPath.row).valueForKey("link") as! String)

我不明白为什么会失败。希望比我聪明的人可以提供帮助。

接收端VC的代码如下”

var newsURL : NSURL!
    //var newsURL = NSURL(string: "http://www.google.co.nz")

    @IBOutlet weak var newsWebView: UIWebView!
    @IBOutlet weak var descTextView: UITextView!

以及在viewDidAppear函数中

let request : NSURLRequest = NSURLRequest(URL: newsURL!)

newsWebView.loadRequest(请求)

更多信息

变量类型

var posts = NSMutableArray()
var elements = NSMutableDictionary()

我如何添加对象

elements.setObject(urlLink, forKey: "link")
posts.addObject(elements)

最佳答案

您能显示“posts”变量的声明/结构吗?

没有更多信息,我唯一能想到的是“link”的值实际上不是一个字符串,而是打印时显示该内容的东西(可能是 NSURL)。这可以解释 println 显示相同的 url 但转换失败。

当您打印或隐式地将任何对象转换为字符串(如 println 中)时,它会调用该对象的“description”方法。

例如:

class MyURLContainer {
  var link:String

  override func description() -> String {
    return link
  }
}


let url = MyURLContainer()
let url.link = "http://www.example.com"
println( "my link: \(url)" ) // this would show the link correctly
let link = url as? String // this will be nil, as url can't be casted to String

关于objective-c - 将 tabelview indexPath.row 作为字符串传递给 VC WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637930/

相关文章:

objective-c - NSToolbarItem 选择不覆盖文本

swift - 检测 float 的变化

JAVA 将 ID 链接到其他表中的名称

JavaFX 8-将 TableView 列 ContextMenu 锚定在列标题的正下方?

ios - tableView 单元格虚线边框未正确呈现

ios - 输入 2 个字符后从 UITextfield 移动焦点

arrays - 在 Swift 4.2 中从 String 创建 Modal 类

ios - 从 Swift 调用 Objective C 自定义初始化函数

java - TableView.setItems 在 java 中抛出 null 异常

javascript - SocketIO 发送带有参数的事件?