gpt4 book ai didi

ios - 从 UITableView 的每个部分中选择的行(多项选择)

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

我使用了tableview(分组)。

所以我需要从 UITableviewSection 的每个部分中选择一行。

因此,我有表格 View 和一个提交按钮。因此,当我单击提交按钮时,我需要检查我是否从每个部分中选择了一行,如果没有,则显示警报为未选择节号。如何查看?

这是我的数据。

{
"data":[
{
"question": "Gender",
"options": ["Male","Female"]
},
{
"question": "How old are you",
"options": ["Under 18","Age 18 to 24","Age 25 to 40","Age 41 to 60","Above 60"]
},
{
"question": "I am filling the Questionnaire for?",
"options": ["Myself","Mychild","Partner","Others"]
}
]


}

问题模型:-

class QuestionListModel: NSObject {
var selected = false

var dataListArray33:[NH_OptionsModel] = []


var id:Int!
var question:String!
var buttontype:String!
var options:[String]?
var v:String?

var optionsModelArray:[OptionsModel] = []
init(dictionary :JSONDictionary) {

guard let question = dictionary["question"] as? String,
let typebutton = dictionary["button_type"] as? String,

let id = dictionary["id"] as? Int
else {
return

}



if let options = dictionary["options"] as? [String]{
print(options)

print(options)


for values in options{

print(values)

let optionmodel = OptionsModel(values: values)
self.optionsModelArray.append(optionmodel)

}


}


self.buttontype = typebutton
self.question = question
self.id = id
// print(self.dataListArray33)
}

}

选项型号:-

class OptionsModel: NSObject {

var isSelected:Bool? = false

var v:String?
var values:String?



init(values:String) {

self.values = values
print( self.values)

}

View 模型:-

     func numberOfSections(tableView: UITableView) -> Int{
print((datasourceModel.dataListArray?.count)!)
return (datasourceModel.dataListArray?.count)!
}

func titleForHeaderInSection(atsection section: Int) -> NH_QuestionListModel {
return datasourceModel.dataListArray![section]
}

func numberOfRowsIn(section:Int) -> Int {

print( datasourceModel.dataListArray?[section].optionsModelArray.count ?? 0)
return datasourceModel.dataListArray?[section].optionsModelArray.count ?? 0
// return self.questionsModelArray?[section].optionsModelArray.count ?? 0
}

func datafordisplay(atindex indexPath: IndexPath) -> NH_OptionsModel{

print(datasourceModel.dataListArray![indexPath.section].optionsModelArray[indexPath.row])

return datasourceModel.dataListArray![indexPath.section].optionsModelArray[indexPath.row]

}
func question(answer:String) {
print(questions)
questions.append(answer)
print(questions )



}

func questionlist(answer:String) {
print( questionlist )
questionlist.append(answer)
print( questionlist )



}
func answer(answer:String) {
answers.append(answer)
print(answers)



}

最后是viewController:-

func numberOfSections(in tableView: UITableView) -> Int {
return questionViewModel.numberOfSections(tableView: tableView)
}


func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {


let identifier = "HeaderCell"

var headercell: questionheader! = tableView.dequeueReusableCell(withIdentifier: identifier) as? questionheader

if headercell == nil {
tableView.register(UINib(nibName: "questionheader", bundle: nil), forCellReuseIdentifier: identifier)
headercell = tableView.dequeueReusableCell(withIdentifier: identifier) as? NH_questionheader
}

headercell.setReviewData(reviews:questionViewModel.titleForHeaderInSection(atsection:section))




return headercell
}



func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

return 150

}



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return questionViewModel.numberOfRowsIn(section: section)
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


let identifier = "Cell"
var cell: QuestionListCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? QuestionListCell

if cell == nil {
tableView.register(UINib(nibName: "QuestionListCell", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCell(withIdentifier: identifier) as? NH_QuestionListCell
}
cell.contentView.backgroundColor = UIColor.clear


let questionsModel = questionViewModel.titleForHeaderInSection(atsection:indexPath.section)
print(questionsModel.buttontype)

questionViewModel.button = questionsModel.buttontype


cell.setOptions(Options1: questionViewModel.datafordisplay(atindex: indexPath))

print("Section \(indexPath.section), Row : \(indexPath.row)")


return cell

}





func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){


print("Section \(indexPath.section), Row : \(indexPath.row)")


let cell = tableview.cellForRow(at: indexPath) as? NH_QuestionListCell

let model = questionViewModel.datafordisplay(atindex: indexPath)

print(model.isSelected)


cell?.setOptions(OptionsSelected:questionViewModel.datafordisplay(atindex: indexPath))
print(model.isSelected)
questionViewModel.isselected = model.isSelected!



let section = indexPath.section
let index = indexPath.row
print(section)
print(index)



if !questionViewModel.selectedIndexPaths.contains(indexPath) {

questionViewModel.selectedIndexPaths.append(indexPath)
print(questionViewModel.selectedIndexPaths.append(indexPath))


let questionModel = questionViewModel.titleForHeaderInSection(atsection: section)
print(questionModel.question)


questionViewModel.question = questionModel.question
questionViewModel.questionlist(answer: questionViewModel.question!)


let cell = tableview.cellForRow(at: indexPath) as? NH_QuestionListCell

let model = questionViewModel.datafordisplay(atindex: indexPath)
print(model.values)

questionViewModel.answer(answer: model.values!)

let value: Int = questionModel.id
let string = String(describing: value)
//let x: Int? = Int(model.id)

questionViewModel.question_id = string
questionViewModel.question(answer: questionViewModel.question_id!)

print(questionModel.id)

// append the selected index paths
} // if indexPath.section == section {
// questionViewModel.indexPath(indexPaths: index)
// }


}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {




if let index = questionViewModel.selectedIndexPaths.index(of: indexPath) {
print(index)
questionViewModel.selectedIndexPaths.remove(at: index)
}



}

根据这个我得到了输出。但我在 View Controller 中有按钮操作。

@IBAction func forward(_ sender: AnyObject) {
}

在此按钮操作中,我需要检查是否从每个部分中选择了一行。如果不显示警报。该怎么做

我当前的 didselect 方法:-

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
let cell = tableview.cellForRow(at: indexPath) as? NH_QuestionListCell

let model = questionViewModel.datafordisplay(atindex: indexPath)

print(model.isSelected)


cell?.setOptions(OptionsSelected:questionViewModel.datafordisplay(atindex: indexPath))
print(model.isSelected)
questionViewModel.isselected = model.isSelected!



let section = indexPath.section
let index = indexPath.row
print(section)
print(index)


if !questionViewModel.selectedIndexPaths.contains(indexPath) {

questionViewModel.selectedIndexPaths.append(indexPath)
print(questionViewModel.selectedIndexPaths.append(indexPath))


let questionModel = questionViewModel.titleForHeaderInSection(atsection: section)
print(questionModel.question)


questionViewModel.question = questionModel.question
questionViewModel.questionlist(answer: questionViewModel.question!)


let cell = tableview.cellForRow(at: indexPath) as? NH_QuestionListCell

let model = questionViewModel.datafordisplay(atindex: indexPath)
print(model.values)

questionViewModel.answer(answer: model.values!)

let value: Int = questionModel.id
let string = String(describing: value)
//let x: Int? = Int(model.id)

questionViewModel.question_id = string
questionViewModel.question(answer: questionViewModel.question_id!)

print(questionModel.id)

}

我有3个数组根据这个didselect方法:-

例如:-对于第 1 部分:-我选择了第一行,因此数据附加如下。

questionlist:["How r u?"]
answelist:["fine"]

但是假设我认为我需要第二个索引路径,所以我需要从数组中删除以前附加的数据并附加当前数据。如下所示:

questionlist:["How r u?"]
answelist:["not well"]

接下来是第2部分:我选择了第一个indexpath.row数据。然后该数据被追加。所以我需要得到如下:-

 questionlist:["How r u?","Gender"]
answelist:["not well","Male"]

在这里选择我认为我需要第二个选项,然后从数组中删除添加的indexpath.row数据并显示为:-

 questionlist:["How r u?","Gender"]
answelist:["not well","Female"]

这样怎么设置?

最佳答案

您可以根据选择更新模型,例如

"data":[
{
"question": "Gender",
"options": ["Male","Female"],
"optionSelected": "Male"

}
]

然后在“提交”上检查选择的数据

关于ios - 从 UITableView 的每个部分中选择的行(多项选择),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162726/

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