gpt4 book ai didi

IOS swift TableView 有没有办法重用它们

转载 作者:可可西里 更新时间:2023-11-01 02:05:30 26 4
gpt4 key购买 nike

我是 IOS 开发新手,正在使用 swift 3.0。我有 2 个具有相同布局的自定义 TableView。唯一的区别是数据通过 Json URL 返回。一个 TableView 称为 HomePageC ,另一个称为 UserProfileC 。我如何使用 Prototype HomePageC 中的内容并在 UserProfileC 中重用它?这就像有一个数据主页,然后看到个人用户数据,因此 userProfile 但布局相同,因为我认为做 2 个相同的 TableView 是多余的。

这是HomePageC代码

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath) as! HomePageTVC


cell.post.text = Posts[indexPath.row]
cell.fullname.setTitle(FullName[indexPath.row],for: UIControlState.normal)
cell.fullname.tag = indexPath.row
cell.fullname.addTarget(self, action: #selector(HomePageC.Fullname_Click(sender:)), for: .touchUpInside)
cell.comments.setTitle(Comments[indexPath.row],for: UIControlState.normal)
cell.comments.tag = indexPath.row
cell.votes.setTitle(Votes[indexPath.row],for: UIControlState.normal)
cell.votes.tag = indexPath.row
cell.time.text = Times[indexPath.row]
cell.shares.setTitle(Shares[indexPath.row],for: UIControlState.normal)
cell.shares.tag = indexPath.row
cell.location.text = Locations[indexPath.row]


return cell
}

UserProfileC代码

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "UserProfileTVC", for: indexPath) as! HomePageTVC


cell.post.text = Posts[indexPath.row]
cell.fullname.setTitle(FullName[indexPath.row],for: UIControlState.normal)
cell.fullname.tag = indexPath.row
cell.fullname.addTarget(self, action: #selector(HomePageC.Fullname_Click(sender:)), for: .touchUpInside)
cell.comments.setTitle(Comments[indexPath.row],for: UIControlState.normal)
cell.comments.tag = indexPath.row
cell.votes.setTitle(Votes[indexPath.row],for: UIControlState.normal)
cell.votes.tag = indexPath.row
cell.time.text = Times[indexPath.row]
cell.shares.setTitle(Shares[indexPath.row],for: UIControlState.normal)
cell.shares.tag = indexPath.row
cell.location.text = Locations[indexPath.row]
cell.vote_status.text = Votes[indexPath.row]


return cell
}

我试图将它转换到主页,但它给出了一个错误任何帮助都会很棒,因为我很迷茫。

enter image description here

最佳答案

获得可重用表格的一种可能方法是在 Storyboard 中创建一个单独的 UITableViewController 并在那里设计您的原型(prototype)单元格。不再有两个不同的重用标识符——“HomePageTVC”和“UserProfileTVC”——你现在可以有一个(只留下“UserProfileTVC”)。不要忘记将 TableView Controller 的 dataSourcedelegate 设置为它自己。

下一步:将容器 View 添加到您想要在其中重用此表的任何 View Controller (在您的案例中包括 HomePageC 和 UserProfileC Controller )。

Container view

现在只需 Control+拖动 光标从创建的容器 View 到 Storyboard 中的可重用 TableView Controller ,以建立容器关系。

现在你有一个 UITableViewController 类来放置所有单元格管理逻辑,你可以根据当前 parentViewController 属性轻松加载不同的数据——只需检查是什么类型您的表当前嵌入的 Controller :

if parentViewController is HomePageC {
// Load user data for Home page controller
} else if parentViewController is UserProfileC {
// Load user data for user profile controller
}

关于IOS swift TableView 有没有办法重用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43105015/

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