gpt4 book ai didi

ios - 在 cellForRowAtIndexPath 中动态实现部分

转载 作者:行者123 更新时间:2023-11-28 13:00:30 26 4
gpt4 key购买 nike

我无法完全理解 cellForRowAtIndexPath 中部分的实现。

我有一个 UITableView,我想在其中显示 2 个部分。

  • 收到好友请求
  • friend

在 Storyboard 中,我将 UITableView Style 更改为 Grouped

接下来,如果没有 friend 请求,我希望没有 Friend Request 部分。在 viewDidLoad 中:

override func viewDidLoad() {
super.viewDidLoad()
(...)
if friendRequests.isEmpty {
friendsDataSource = friends
} else {
friendsDataSource = [friendRequests, friends]
}
}

其余的:

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return friendsDataSource.count
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return friendsDataSource[section].count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let friendRequest = friendsDataSource[0][indexPath.row]
let friend = friendsDataSource[1][indexPath.row]

if let cell = tableView.dequeueReusableCellWithIdentifier("FriendCell") as? FriendCell {
cell.configureProfileCell(userProfile)
return cell

} else {
return FriendCell()
}
}

我知道我的 cellForRowAtIndexPath 很恶心,但我完全不知道如何实现它。

在正确方向上的任何帮助,非常感谢

最佳答案

发现 if (indexPath.section == 0),我只是绕过它。

看到这个我的眼睛很痛,所以请发布更好的方法。现在:

var friendRequests = [FriendRequest]()
var friends = [UserProfile]()

var friendsDataSource = []

override func viewDidLoad() {
super.viewDidLoad()

friends = FriendManager.instance.myFriends
friendRequests = FriendManager.instance.incomingFriendRequests

if friendRequests.isEmpty {
friendsDataSource = [friends]
} else {
friendsDataSource = [friendRequests, friends]
}
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return friendsDataSource.count
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return friendsDataSource[section].count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

if let cell = tableView.dequeueReusableCellWithIdentifier("FriendCell", forIndexPath: indexPath) as? FriendCell {

if friendRequests.isEmpty {
let friendCell = friends[indexPath.row]
cell.configureProfileCell(friendCell)
} else {
if (indexPath.section == 0) {
let friendRequestCell = friendRequests[indexPath.row]
cell.configureRequestCell(friendRequestCell)
} else if (indexPath.section == 1) {
let friendCell = friends[indexPath.row]
cell.configureProfileCell(friendCell)
}
}
return cell
} else {
return FriendCell()
}
}

关于ios - 在 cellForRowAtIndexPath 中动态实现部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013279/

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