ios - 在分段控件中向 tableview 添加数据的问题
问题描述
我有一个包含两个项目的分段控件,
// Create a segmented control for the stories
let segmentedControl: UISegmentedControl = {
let sc = UISegmentedControl(items: ["Participated Stories", "Drafts"])
sc.addTarget(self, action: #selector(handleSegmentChange), for: .valueChanged)
sc.selectedSegmentIndex = 0
return sc
}()
// Create a list to store all the participated stories
let participatedStories = ["Hello", "Hey", "Hi"]
// Create a list to store all the drafts
let drafts = ["Sup", "Whatsup", "Gone"]
// Create a list to store the list that needs to be displayed
lazy var rowsToDisplay = participatedStories
@objc fileprivate func handleSegmentChange() {
switch segmentedControl.selectedSegmentIndex {
case 0:
rowsToDisplay = participatedStories
default:
rowsToDisplay = drafts
}
tableView.reloadData()
}
handleSegmentChange 函数的作用是根据分段控件中选择的选项卡更改表格视图中的数据。这工作正常。现在我想从 Firebase 检索数据并在表格视图中显示数据,这是我尝试过的:
// The data for the story Drafts
struct DraftStoriesData {
var storyKey: String
var storyTitle: String
var votes: Int
}
// The data for the participated stories
struct ParticipatedStoriesData {
var storyKey: String
var storyTitle: String
var votes: Int
}
let participatedStories: [ParticipatedStoriesData] = []
let drafts: [DraftStoriesData] = []
lazy var rowsToDisplay = participatedStories
@objc fileprivate func handleSegmentChange() {
switch segmentedControl.selectedSegmentIndex {
case 0:
rowsToDisplay = participatedStories
default:
rowsToDisplay = drafts
}
tableView.reloadData()
}
但是这样做会出错 -
无法将类型“[DraftStoriesData]”的值分配给类型“[ParticipatedStoriesData]”
解决方案
问题就在这里
rowsToDisplay = drafts
drafts
是一个类型的数组DraftStoriesData
并且rowsToDisplay
是类型的 ParticipatedStoriesData
所以分配不会编译你重复相同的模型
struct DraftStoriesData {
var storyKey: String
var storyTitle: String
var votes: Int
}
// The data for the participated stories
struct ParticipatedStoriesData {
var storyKey: String
var storyTitle: String
var votes: Int
}
您应该从上面删除 1 并将另一个用作两个数组的类型,例如
var participatedStories: [ParticipatedStoriesData] = []
var drafts: [ParticipatedStoriesData] = []
或者
var participatedStories: [DraftStoriesData] = []
var drafts: [DraftStoriesData] = []
推荐阅读
- javascript - 在变量为假时停止循环
- android - 在 robo 脚本记录器中创建后将延迟插入到 robo 测试脚本中
- python-3.x - 如何将 tkinter Scale 小部件的长度设置为现有值
- reactjs - 如何在 Typescript 中编写 React 无状态功能组件?
- android - 如果它的当前视图,Android 活动如何访问该实例?
- python - 从 pandas DataFrame 中选择包含以整数开头的字符串的行
- python-3.x - 当尝试使用各种先前的行值来计算新列时,For 循环会挂起。需要找到一个非for循环的解决方案
- javascript - 如何从来自服务器的日期中以 dd/mm/yyyy 格式仅提取月份和年份(作为字符串)并将其存储在变量中?
- python - 为什么我的贝叶斯统计代码不起作用?
- c# - 将 SQL 转换为 Linqe