indexpath.row 在 3 inside tableView heightForRowAt 后重置
indexpath.row reset after 3 inside tableView heightForRowAt
您好,正如标题所说 index.row 永远不会达到 4,而是重新开始 [2,0]。我的 tableView 有 5 行。我不知道它什么时候停止工作,但我确定它在我添加 timeIndex 行之前工作。
我在显示 "Enter Address Here" 字段时遇到问题
let timeIndex = 2
let DateLocation = 1
let locationIndex = 4
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if userPickedDate && indexPath.row == timeIndex {
return 50
}
if userPickedDate && indexPath.row == DateLocation {
return 0
}
print("The indexPath: \(indexPath)")
if remindMeOnLocationSwitch.isOn && indexPath.row == locationIndex {
return 100
}
if remindMeOnDay.isOn && indexPath.row == DateLocation{
return 300
} else if indexPath.row == DateLocation || indexPath.row == timeIndex || indexPath.row == locationIndex {
return 0
}
return 50
}
控制台输出
您可以在 numberOfRowsInSection
中查看您拥有的内容
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int
{
if(section == 0){
return 1
}
else if(section == 1){
return 2
}else{
return 3
}
}
numberOfRowsInSection 中设置的行数应该是错误的
每个部分都有不同的行数。
这就是为什么您的 indexPath 永远不会达到 4 的原因。
[2,0] 表示第 2 节中的第 0 行。
您可以根据这样的部分检查行:-
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 0{
}else if indexPath.section == 1{
}else if indexPath.section == 2{
if indexPath.row == 0{
// here is your fifth row return height for fifth row
}
}
}
我发现了我忘记更新 numberOfRowsInsideSection 函数中的行数的问题
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
// Change from [1,4,1] to [1,5,1]
let numberOfRowsInSection: [Int] = [1,5,1]
var rows: Int = 0
if section < numberOfRowsInSection.count {
rows = numberOfRowsInSection[section]
}
return rows
}
您好,正如标题所说 index.row 永远不会达到 4,而是重新开始 [2,0]。我的 tableView 有 5 行。我不知道它什么时候停止工作,但我确定它在我添加 timeIndex 行之前工作。
我在显示 "Enter Address Here" 字段时遇到问题
let timeIndex = 2
let DateLocation = 1
let locationIndex = 4
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if userPickedDate && indexPath.row == timeIndex {
return 50
}
if userPickedDate && indexPath.row == DateLocation {
return 0
}
print("The indexPath: \(indexPath)")
if remindMeOnLocationSwitch.isOn && indexPath.row == locationIndex {
return 100
}
if remindMeOnDay.isOn && indexPath.row == DateLocation{
return 300
} else if indexPath.row == DateLocation || indexPath.row == timeIndex || indexPath.row == locationIndex {
return 0
}
return 50
}
控制台输出
您可以在 numberOfRowsInSection
中查看您拥有的内容 func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int
{
if(section == 0){
return 1
}
else if(section == 1){
return 2
}else{
return 3
}
}
numberOfRowsInSection 中设置的行数应该是错误的
每个部分都有不同的行数。 这就是为什么您的 indexPath 永远不会达到 4 的原因。 [2,0] 表示第 2 节中的第 0 行。 您可以根据这样的部分检查行:-
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 0{
}else if indexPath.section == 1{
}else if indexPath.section == 2{
if indexPath.row == 0{
// here is your fifth row return height for fifth row
}
}
}
我发现了我忘记更新 numberOfRowsInsideSection 函数中的行数的问题
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
// Change from [1,4,1] to [1,5,1]
let numberOfRowsInSection: [Int] = [1,5,1]
var rows: Int = 0
if section < numberOfRowsInSection.count {
rows = numberOfRowsInSection[section]
}
return rows
}