gpt4 book ai didi

ios - 从 UITableCellView 和 UITableView 传输数据

转载 作者:行者123 更新时间:2023-11-28 08:10:13 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com