我使用的是swift 3,我有一个自定义TableView
。
但是我试图让第一行与其他所有行完全不同。这就像Facebook应用程序,其中第一行有一个TextBox,表明“你在想什么?”,而tableView的其余部分是相同的。
我的自定义TableView如下所示:
我现在想在第一个TableView行上放置一个TextView,我该怎么做呢?
这是我的代码:
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]
cell.vote_status.text = VoteStatus[indexPath.row]
return cell
}
答案 0 :(得分:1)
创建第二个单元格并将该单元格放回第一行,为第一行使用不同的标识符。
注意:还要返回其他回调(如高度),具体取决于indexPath.row == 0
答案 1 :(得分:1)
您可以创建一个表视图标题,该标题位于该部分的顶部,可以与您在cellForRowAtIndexPath中调用的自定义可重用单元格不同。
看看这个例子它应该让你入门。 https://www.hackingwithswift.com/example-code/uikit/how-to-add-a-section-header-to-a-table-view
答案 2 :(得分:1)
选项1:
使用两个部分,第1部分仅返回1个单元格
选项2:
创建自定义单元格,然后在tableview
方法中,使用indexPath = 1
之类的逻辑,然后使用cell as custom cell
,否则使用cell as prototype cell
答案 3 :(得分:1)
创建2个单元格,然后在cellForRow函数中使用以下逻辑:
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCell", for: indexPath) as! MyCustomCell
//Do things
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath) as! HomePageTVC
//Do other things
}
答案 4 :(得分:0)
这是我如何做到的......
您需要使用自定义Model,Cell和XIB。
首先设置你的变量:
var results: [Results] = []
然后设置自定义模型:
struct Results {
var location: String
init(description: String, company_name: String, places: String){
self.location = location
}
func toAnyObject() -> Any {
print("return")
return [
"location": location,
]
}
然后附加到您的模型:
resultsReturn = Results(description: description!..... etc)
然后创建ResultsCell.swift文件并创建一个新函数:
func configureForResults(results: Results) {
print(results)
}
创建ResultsCell.swift时,请务必选中"创建XIB"然后在XIB中添加标签,图片和其他任何你想要的东西。
然后连接ResultsCell.swift文件中的标签和输出,然后连接configureForResults:
location.text = results.location
然后在你的cellForRowAt:
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCell", for: indexPath) as! ResultsCell
let result = resultsReturn[indexPath.row];
cell.configureForResults(results: self.result)
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath) as! HomePageTVC
//Do other things
}
然后你需要创建AwakeFromNib函数,还有另外一件事你需要做的事情,我找不到它,因为我的笔记本电脑刚刚死了。一旦打开电源,我会更新这个答案。