我想我已经接近了,但我只需要一点方向来帮助完成。我想用我的数据填充tableview,但我很难过。
我有两个包含用户数据的词典数组:每日工作和每周工作。
数组#1:
let finalDailyJobsArray = [JobsAndHabits(name: "counters", multiplier: 1.0, assigned: "Sophie", order: 0),
JobsAndHabits(name: "bedroom", multiplier: 1.0, assigned: "Sophie", order: 1),
JobsAndHabits(name: "bathrooms", multiplier: 1.0, assigned: "Allan", order: 2),
JobsAndHabits(name: "laundry", multiplier: 1.0, assigned: "Mother", order: 3),
JobsAndHabits(name: "living room", multiplier: 1.0, assigned: "Father", order: 4),
JobsAndHabits(name: "dining room", multiplier: 1.0, assigned: "Father", order: 5),
JobsAndHabits(name: "dishes", multiplier: 1.0, assigned: "Allan", order: 6)]
阵列#2:
let finalWeeklyJobsArray = [JobsAndHabits(name: "wash windows", multiplier: 1.0, assigned: "Father", order: 1),
JobsAndHabits(name: "weed garden", multiplier: 1.0, assigned: "Father", order: 0),
JobsAndHabits(name: "sweep porch", multiplier: 1.0, assigned: "Father", order: 2),
JobsAndHabits(name: "clean pool", multiplier: 1.0, assigned: "Mother", order: 4),
JobsAndHabits(name: "dusting & cobwebs", multiplier: 1.0, assigned: "Sophie", order: 3)]
另外,我有两个变量也可以保存单个信息。
单变量:
let inspectionParent = "Mother" // this is a daily job
let paydayParent = "Father" // this is a weekly job
我想将这些内容放入一个包含每个用户的部分的tableview中。它看起来像这样:
正如您所看到的,我想出了如何从我的阵列中获取用户图像和用户名,以及如何确定要创建的部分数量,但我不能为我的生活做好准备弄清楚如何自定义cellForRowAt
属性。
我想列出每个人的日常工作和他们名下的每周工作。我猜这个诀窍在于弄清楚如何使用indexPath.row
功能迭代数组,但到目前为止我的努力还没有奏效。有人可以介入并帮助我吗?
我尝试过的事情:
尝试#1:我认为这是正确的方向,但我不确定如何让单元格进行协调,甚至不知道如何放置此代码。
let userNames2 = finalUsersArray.map({ return $0.firstName }).sorted()
let jobAssignments2 = finalWeeklyJobsArray.map({ return $0.assigned }).sorted()
let userNames3 = finalUsersArray.filter({ return $0.firstName == "Father" })
尝试#2:这在每个部分重复了相同的数据,这不是我想要的。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell") as! JobSummaryCellB
if User.finalUsersArray[indexPath.row].firstName == JobsAndHabits.finalWeeklyJobsArray[indexPath.row].assigned {
cell.userNameLabel.text = JobsAndHabits.finalWeeklyJobsArray[indexPath.row].name
}
return cell
尝试#3:完全没有工作。
cell.userNameLabel.text = User.finalUsersArray.filter({ return $0.firstName == "Father" })
尝试#4:也没有工作(返回错误)
if JobsAndHabits.finalWeeklyJobsArray[indexPath.row].assigned == User.finalUsersArray[indexPath] {
cell.userNameLabel.text = JobsAndHabits.finalWeeklyJobsArray[indexPath.row].name
我找到了这些文章,但无法弄清楚如何根据我的情况调整它们:article1,article2,article3
任何帮助都会很棒!
编辑#1:
这是我的numberOfSections
方法:
func numberOfSections(in tableView: UITableView) -> Int {
return User.finalUsersArray.count
}
我的viewForHeaderInSection
方法:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! JobSummaryCell
cell.headerImage.image = User.finalUsersArray[section].photo
cell.headerLabel.text = User.finalUsersArray[section].firstName
return cell
}
我的两个结构:
struct User {
var photo: UIImage
var firstName: String
var birthday: Int
var passcode: Int
var gender: String
var childParent: String
}
struct JobsAndHabits {
var name: String
var multiplier: Double
var assigned: String
var order: Int
static var finalDailyJobsArray = [JobsAndHabits]()
static var finalWeeklyJobsArray = [JobsAndHabits]()
static var inspectionParent = ""
static var paydayParent = ""
}
更新#2:如何填充finalUsersArray。
static func loadMembers() {
let firebaseUser = FIRAuth.auth()?.currentUser
let ref = FIRDatabase.database().reference().child("users").child(firebaseUser!.uid)
ref.child("members").observeSingleEvent(of: .value, with: { (snapshot) in
for item in snapshot.children {
if let snap = item as? FIRDataSnapshot {
if let value = snap.value as? [String : Any] {
let birthday = value["birthday"] as! Int
let childParent = value["childParent"] as! String
let firstName = value["firstName"] as! String
let gender = value["gender"] as! String
let passcode = value["passcode"] as! Int
let profileImageUrl = value["profileImageUrl"] as! String
// get images
let storageRef = FIRStorage.storage().reference(forURL: profileImageUrl)
storageRef.data(withMaxSize: 1 * 1024 * 1024, completion: { (data, error) in
let pic = UIImage(data: data!)
let user = User(photo: pic!,
firstName: firstName,
birthday: birthday,
passcode: passcode,
gender: gender,
childParent: childParent)
finalUsersArray.append(user)
})
}
}
}
})
}
答案 0 :(得分:1)
你必须这样使用:
my_spark
答案 1 :(得分:0)
因此,如果我了解您的问题,您只想自定义您的单元格在TableView中的显示方式。 首先,您必须为TableView指出2个信息:
func numberOfSections(in:UITableView)询问数据源 返回表视图中的节数。
func tableView(UITableView,numberOfRowsInSection:Int)告诉数据 source返回表的给定部分中的行数 视图。必需的。
然后,您需要自定义您的单元格:
"customCell"
但是您是否有一个类来表示您的单元格的设计?func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
中使用您的商店配置您的单元格......