gpt4 book ai didi

iOS Swift 自定义单元格函数

转载 作者:搜寻专家 更新时间:2023-11-01 06:37:56 25 4
gpt4 key购买 nike

我有一个 TableView 和自定义单元格。在我的自定义单元格中,我有这个功能:

func URLRequest(bookId : String) {


let headers = [
"Authorization": "Bearer",
"Accept": "application/json"
]

let url = "http://example.com/api/v1/books/\(bookId)/related"

let URLRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
URLRequest.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad


UIApplication.sharedApplication().networkActivityIndicatorVisible = true

Alamofire.request(.GET, url, headers:headers)
.validate()
.responseJSON { response in


switch response.result {
case .Success:
if let jsonData = response.result.value {

dispatch_async(dispatch_get_main_queue(), {

print("Custom Cell")

return
})
self.tableRefresh()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false

}
case .Failure(let error):
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
print(error)
}

}

}

然后我在我的 tableView 中运行这个函数:

if indexPath.row == 4 {
let cell = tableView.dequeueReusableCellWithIdentifier("relatedCell", forIndexPath: indexPath) as! RelatedBookTableViewCell
cell.URLRequest(self.bookID)
return cell
}

但问题是每次我滚动 TableView 时都会再次运行此请求 (URLRequest)。我想在 View 加载时发送此请求一次。

我的问题在哪里?

P.S 我尝试用这个在自定义单元格中加载我的 URLRequest

override init()

但我无法将 bookId 值从 tableview 传递到自定义单元格并返回 nil。

谢谢

最佳答案

您遇到的问题的发生是因为表格 View 单元格被表格 View 重用。这意味着操作系统只在内存中保留很少的单元格,但当您滚动时,它会在 View 中移动它们。

无论如何,有两种方法可以解决这个问题:

第一个涉及在 TableView Controller 中获取书籍信息(使用字典或数组),并且在初始化单元格时,只需在单元格中设置属性即可。 首选

第二个是将当前的 bookId 存储在单元格中,如果单元格当前显示的是该书的 id,则返回。 不推荐这样做。

请记住,单元格不是 Controller ,它应该只用于存储数据和修改 View 。所有的逻辑都应该在 TableView Controller 中。

关于iOS Swift 自定义单元格函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247230/

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