Swift简单列表
发布时间:2020-12-14 06:20:35 所属栏目:百科 来源:网络整理
导读:得到一个UITableView实例: @IBOutlet var showHomeTBView: UITableView? 同样的实现其数据源方法和代理方法: // MARK: - UITableViewDataSource UITableViewDelegate func numberOfSections(in tableView: UITableView) - Int { return 1 } func tableView(_
得到一个UITableView实例:@IBOutlet var showHomeTBView: UITableView? 同样的实现其数据源方法和代理方法:
// MARK: - UITableViewDataSource UITableViewDelegate func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int { return self.itemsArray!.count } func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell { var showHomeTableViewCell: ShowHomeTableViewCell! showHomeTableViewCell = self.showHomeTBView!.dequeueReusableCell(withIdentifier: "ShowHomeTableViewCellIdentifier",for: indexPath) as? ShowHomeTableViewCell showHomeTableViewCell!.showImageView!.image = UIImage(named: "ball-Image") showHomeTableViewCell?.showNameLabel?.text = self.itemsArray![indexPath.row] as? String showHomeTableViewCell.delegate = self return showHomeTableViewCell } func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat { return 160 } func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) { self.selectedIndexPath = indexPath //self.performSegue(withIdentifier: "gotoDetailViewController",sender: self) self.showHomeTBView?.deselectRow(at: indexPath,animated: true) } // MARK: - TableViewCell delegate func doSelect(_ sender: Any) { /* UIView *view = [button superview]; GameForPlaceTableViewCell *gameForPlaceTableViewCell = (GameForPlaceTableViewCell *)[view superview]; NSIndexPath *indexPath = [self.gameForPlaceTBView indexPathForCell:gameForPlaceTableViewCell]; self.selectedIndexPath = indexPath; */ let view = (sender as! UIButton).superview let showHomeTableViewCell = view!.superview as! ShowHomeTableViewCell let indexPath = self.showHomeTBView!.indexPath(for: showHomeTableViewCell) self.selectedIndexPath = indexPath self.performSegue(withIdentifier: "gotoDetailViewController",sender: self) } 自定义UITableViewCell:
class ShowHomeTableViewCell: UITableViewCell { @IBOutlet var showImageView: UIImageView? @IBOutlet var showNameLabel: UILabel? @IBOutlet var selectButton: UIButton? var delegate: ShowHomeTableViewCellDelegate? override func awakeFromNib() { super.awakeFromNib() // Initialization code self.selectButton!.layer.cornerRadius = 15 self.selectButton!.layer.masksToBounds = true self.selectButton!.backgroundColor = UIColor.blue } override func setSelected(_ selected: Bool,animated: Bool) { super.setSelected(selected,animated: animated) // Configure the view for the selected state } @IBAction func doSelect(_ sender: Any) { if delegate != nil { delegate!.doSelect(sender) } } } 点击自定义的UITableViewCell上得button时用代理传递:
protocol ShowHomeTableViewCellDelegate { func doSelect(_ sender: Any) } 实现vc的跳转:
// MARK: - Transmit data override func prepare(for segue: UIStoryboardSegue,sender: Any?) { let detailVC = segue.destination as! DetailViewController if segue.identifier == "gotoDetailViewController" { detailVC.nameStr = self.itemsArray![self.selectedIndexPath!.row] as? String } }
效果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |