Tableview单元格崩溃和swift中的扩展值

时间:2017-10-09 06:12:26

标签: swift uitableview swift2

  

我想用折叠和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)
   } 
}

1 个答案:

答案 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
    }
}