我想用折叠和exapnnd创建tableview单元格。但我有一些错误。我想要一些帮助!下面是我的代码希望你不介意我是swift2的新手
我正在使用swift2。
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
@IBOutlet weak var tableview: UITableView!
想将sectionArr作为标题
let sectionArr = ["animal", "bird"] //section
let animalArr = ["dog", "cat"]
let birdArr = ["crow", "cock"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionArr.count
}
//标题部分
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
headerView.frame = CGRectMake(0, 0, tableView.frame.size.width, 80)
// headerView.backgroundColor = [UIColor, clearColor];
let lblTitle = UILabel()
lblTitle.frame = CGRectMake(0, 0, tableView.frame.size.width, 40)
lblTitle.text = sectionArr[section]
headerView.addSubview(lblTitle)
return headerView
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return animalArr.count
} else {
return birdArr.count
}
}
//显示视图单元格
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell1:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
//cell1.textLabel!.text=sectionArr[indexPath.row]
cell1.textLabel!.text=animalArr[indexPath.row]
cell1.textLabel!.text=birdArr[indexPath.row]
return cell1
}
保存选定的indexpath行
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let Toy = sectionArr[indexPath.row]
print(Toy)
}
}
答案 0 :(得分:1)
我得到了答案!在这里,我在tableview中分享了我的折叠和扩展单元的代码。希望它的帮助!
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
let sectionArr = ["Animal", "Bird"]
let animalArr = ["dog", "cat"]
let birdArr = ["crow", "cock"]
var isBool = false
var sec = 0
@IBOutlet weak var tableview: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableview.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionArr.count
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
headerView.frame = CGRectMake(0, 0, tableview.frame.size.width, 80)
//create lable dynamically
let lblTitle = UILabel()
lblTitle.frame = CGRectMake(0, 0, tableview.frame.size.width, 40)
lblTitle.text = sectionArr[section]
headerView.addSubview(lblTitle)
//create button dynamically
let btn: UIButton = UIButton(frame: CGRectMake(0, 0, tableview.frame.size.width, 40))
btn.setTitle(sectionArr[section], forState: UIControlState.Normal)
btn.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
btn.tag = section // change tag property
headerView.addSubview(btn)
return headerView
}
func buttonAction(sender: UIButton!)
{
if isBool == false {
sec = sender.tag
isBool = true
tableview.reloadData()
} else {
sec = 0
isBool = false
tableview.reloadData()
}
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
if isBool && sec == 0 {
return animalArr.count
} else {
return 0
}
} else{
if isBool && sec == 1 {
return birdArr.count
} else {
return 0
}
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell1:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
if(indexPath.section == 0)
{
cell1.textLabel!.text=animalArr[indexPath.row]
}
else
{
cell1.textLabel!.text=birdArr[indexPath.row]
}
return cell1
}
}