ios - 从 UITableCellView 和 UITableView 传输数据

标签 ios swift uitableview

我有一个 UITableViewController,它有自己的类 HomeVC,包含多个 Cell,其中一个使用自己的类 NewsFeedCell。此单元格包含一个显示图片的垂直 UIScrollView。我希望用户在单击该行时触发带有图片的 VC 转场。我在 NewsFeedCell 类中创建了一个 currentPage 变量,它清楚地显示了 UIScrollView 显示的页面和图片。

HomeVC 中,我有这个:

class HomeVC: UITableViewController {
(...)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
 (...)   
 if indexPath.row == 0 { //The cell containing the UIScrollView
        print(NewsFeedCell.currentPage) // I used "print" to simply the shown code 
    }
  }
}

问题是 xcode 给我一个错误,说 Instance member "currentPage"cannot be used on type "NewsFeedCell"

我尝试在 NewsFeedCell 的代码中将 currentPage 的值打印到控制台,它成功了。

顺便说一句,该变量在 NewsFeedCell 内声明,并在 awakeFromnNib() 下将其第一个值分配给 0,第二次下:

func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView){
    currentPage = Int(floor((scrollView.contentOffset.x - cellWidth / 2) / cellWidth)) + 1
    print(currentPage)
}

请帮忙!

最佳答案

这听起来像是您将 currentPage 创建为实例变量,这意味着 NewsFeedCell 类型的每个对象都有自己的版本。要访问它,您必须引用一个单独的 NewsFeedCell,如下所示:

var myCell = NewsFeedCell()
print(myCell.currentPage)

它的值对于每个单元格都是不同的。如果您希望所有 NewsFeedCell 都只有一个 currentPage,您可以将其声明为静态的,如下所示(在 NewsFeedCell 类中):

static var currentPage: Int = 0

然后您可以像以前一样使用 NewsFeedCell.currentPage 访问它。

您能够从 NewsFeedCell 内的函数print(currentPage) 的原因是该函数是一个实例方法。每个实例都有自己的副本,它会打印调用该方法的特定实例的 currentPage。

我不太清楚你到底想用 currentPage 做什么,所以我不确定你是想要静态变量还是实例变量。一般来说,如果您希望有一个可以从任何地方访问的变量版本,请将其设为静态。如果您希望每个单元格都有自己的值,请将其设置为常规实例变量。

关于ios - 从 UITableCellView 和 UITableView 传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43959218/

相关文章:

ios - 在 UITableView 中,我如何知道一行的 scrollRectToVisible 何时完成?

ios - iPhone 连接到 localhost Rails sarver

ios - ScrollView 不能在 iOS7 中使用 AutoLayout

ios - UIBarButtonItem 的单击事件似乎在 MonoTouch 中不起作用

ios - 如何播放 MPMediaItemCollection?

ios - 在 UITableViewController 中设置默认选中的单元格

ios - 用户点击 SearchBar 时如何使 TableView 不透明

ios - TabBarController 内的 TabBarController

swift - 如何设置 SKLabelNode 的字体大小以适应固定大小(Swift)

ios - 我想用按钮在 Tableview 中一一显示单元格