【问题标题】:Swift tableView ambigiousSwift tableView 模棱两可
【发布时间】:2015-11-03 10:07:15
【问题描述】:

我对通过远程JSON 文件填充的UITableView 有疑问。我有两个功能:

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' 的模糊引用”并将其前面的两个函数指向为“候选”。我不知道如何挑选候选人或解决这个烦人的错误。

【问题讨论】:

  • Xcode 指向的错误之前的两个函数是什么? numberOfRowsInSection" & "cellForRowAtIndexPath" 函数?
  • 你初始化了什么类?它是 VIewController 还是 tableView 控制器?如果是这样,请参阅此链接:stackoverflow.com/questions/30028129/…。我猜你没有初始化 tableView。
  • lukeslvi 回答导致我出错。虽然应用确实填满了表格,但从表格视图到控制器的出口不见了。

标签: ios swift uitableview


【解决方案1】:

我检查了您的代码,一切正常。但就我而言,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)
        }
    }


干杯。

【讨论】:

    【解决方案2】:

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

    所以不要这样:

    @IBOutlet weak var tableView: UITableView!
    

    将您的出口重命名为其他名称:

    @IBOutlet weak var newsTableView: UITableView!
    

    然后在你的prepareForSegue 代码中使用这个出口变量:

    let myIndexPath = self.newsTableView.indexPathForSelectedRow!
    

    【讨论】:

    • 感谢您的回答 - 如果可以的话,我会支持他们。 lukeslvi 引导我找到答案 - 表格视图未正确初始化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多