Swift tableView ambigious

时间:2015-11-03 10:07:16

标签: ios swift uitableview

我遇到了通过远程UITableView文件填充JSON的问题。我有两个功能:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return newsdata.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)  as! NewsTableViewCell
    let nachricht = newsdata[indexPath.row]
    cell.NewsHeadline.text = nachricht.newstitel
    return cell
}

设置并运行,并将ID“ShowNewsDetail”连接到另一个具有UIWebView的视图控制器。但是,在代码中连接两个控制器不起作用:

override func prepareForSegue(segue: UIStoryboardSegue,
        sender: AnyObject?) {

        if segue.identifier == "ShowNewsDetails" {
            let detailViewController = segue.destinationViewController
                as! NewsDetailViewController
            let myIndexPath = self.tableView.indexPathForSelectedRow()
            let row = myIndexPath?.row
            detailViewController.webSite = newsdata[row!]
        }
}

Xcode 7.1报告“对成员'tableView'的模糊引用”并指向它之前的两个函数作为“候选者”。我不知道如何挑选候选人或解决这个恼人的错误。

2 个答案:

答案 0 :(得分:0)

我检查了你的代码,一切正常。但在我的情况下,Swift应用了一些更改。我的xCode也是7.1版本。我只是在一个细节控制器中传递一个字符串。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "ShowNewsDetails" {
            let detailViewController = segue.destinationViewController
            as! NewsDetailViewController
            let myIndexPath = self.tableView.indexPathForSelectedRow!
            let index = myIndexPath.row
            detailViewController.tempStr = String(index)
        }
    }


欢呼声。

答案 1 :(得分:0)

我的猜测是你有一个名为tableView的插座。编译器将outlet的符号视为与两个方法名称的符号相同。

所以不要这样:

@IBOutlet weak var tableView: UITableView!

将您的插座重命名为其他内容:

@IBOutlet weak var newsTableView: UITableView!

然后在prepareForSegue代码中使用此出口变量:

let myIndexPath = self.newsTableView.indexPathForSelectedRow!