日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

swift自定義表格控件(UITableView)_Swift

作者:PandaMohist ? 更新時間: 2022-04-08 編程語言

本文實例為大家分享了swift自定義表格控件的具體代碼,供大家參考,具體內容如下

1、效果圖

2、控件

storyboard上的控件就2個:UIButton。

3、為按鈕添加點擊事件

通過輔助編輯器為這2個按鈕添加按鈕單擊事件:分別為 generalBtnClick 和 ? groupBtnClick

4、完整代碼

import UIKit

enum UIControlType{
? ? case Basic
? ? case Advanced
}

class ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{
? ??
? ? var tableView:UITableView?
? ??
? ? var ctrlnames:[String]? = ["按鈕", "文本框", "標簽"];
? ??
? ? var allnames:Dictionary<Int, [String]>?
? ??
? ? var adHeaders:[String]?
? ??
? ? var ctype:UIControlType!
? ??
? ? override func loadView() {
? ? ? ? super.loadView()
? ? }
? ??
? ? override func viewDidLoad() {
? ? ? ? super.viewDidLoad()
? ? ? ??
? ? ? ? // ? ? ? ?//初始化數據,這一次數據,我們放在屬性列表文件里
? ? ? ? // ? ? ? ?self.ctrlnames = ?NSArray(contentsOfFile: NSBundle.mainBundle().pathForResource("Controls", ofType:"plist")!) as? Array
? ? ? ? //
? ? ? ? // ? ? ? ?print(self.ctrlnames, terminator: "")
? ? ? ??
? ? ? ? //初始化數據,這一次數據,我們放在屬性列表文件里
? ? ? ? self.allnames = ?[ 0:[String](self.ctrlnames!),1:[String]([
? ? ? ? ? ? "日期選擇器",
? ? ? ? ? ? "網頁選擇器",
? ? ? ? ? ? "工具條",
? ? ? ? ? ? "表格視圖"])
? ? ? ? ];
? ? ? ??
? ? ? ? // ? ? ? ?print(self.allnames, terminator: "")
? ? ? ??
? ? ? ? self.adHeaders = [
? ? ? ? ? ? "常見UIKit控件",
? ? ? ? ? ? "高級UIKit控件"
? ? ? ? ]
? ? }
? ??
? ? @IBAction func generalBtnClicked(sender: UIButton) {
? ? ? ? self.ctype = UIControlType.Basic
? ? ? ??
? ? ? ??
? ? ? ? //創建表視圖
? ? ? ? self.tableView = UITableView(frame:CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height - 100), style:UITableViewStyle.Plain)
? ? ? ? self.tableView!.delegate = self
? ? ? ? self.tableView!.dataSource = self
? ? ? ? //創建一個重用的單元格
? ? ? ? self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
? ? ? ? self.view.addSubview(self.tableView!)
? ? ? ??
? ? ? ??
? ? ? ? //創建表頭標簽
? ? ? ? let headerLabel = UILabel(frame: CGRectMake(0, 0, self.view.bounds.size.width, 30))
? ? ? ? headerLabel.backgroundColor = UIColor.blackColor()
? ? ? ? headerLabel.textColor = UIColor.whiteColor()
? ? ? ? headerLabel.numberOfLines = 0
? ? ? ? headerLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
? ? ? ? headerLabel.text = "常見 UIKit 控件"
? ? ? ? headerLabel.font = UIFont.italicSystemFontOfSize(20)
? ? ? ? self.tableView!.tableHeaderView = headerLabel
? ? }
? ??
? ? @IBAction func groupBtnClicked(sender: UIButton) {
? ? ? ? self.ctype = UIControlType.Advanced
? ? ? ??
? ? ? ? //創建表視圖
? ? ? ??
? ? ? ??
? ? ? ? self.tableView = UITableView(frame:CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height - 100), style:UITableViewStyle.Grouped)
? ? ? ? self.tableView!.delegate = self
? ? ? ? self.tableView!.dataSource = self
? ? ? ? //創建一個重用的單元格
? ? ? ? self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
? ? ? ? self.view.addSubview(self.tableView!)
? ? ? ??
? ? ? ? //創建表頭標簽
? ? ? ? let headerLabel = UILabel(frame: CGRectMake(0, 0, self.view.bounds.size.width, 30))
? ? ? ? headerLabel.backgroundColor = UIColor.blackColor()
? ? ? ? headerLabel.textColor = UIColor.whiteColor()
? ? ? ? headerLabel.numberOfLines = 0
? ? ? ? headerLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
? ? ? ? headerLabel.text = "高級 UIKit 控件"
? ? ? ? headerLabel.font = UIFont.italicSystemFontOfSize(20)
? ? ? ? self.tableView!.tableHeaderView = headerLabel
? ? }
? ??
? ??
? ? //在本例中,只有一個分區
? ? func numberOfSectionsInTableView(tableView: UITableView) -> Int {
? ? ? ? return self.ctype == UIControlType.Basic ? 1:2;
? ? }
? ??
? ? //返回表格行數(也就是返回控件數)
? ? func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
? ? ? ? let data = self.allnames?[section]
? ? ? ? return data!.count
? ? }
? ??
? ??
? ? // UITableViewDataSource協議中的方法,該方法的返回值決定指定分區的頭部
? ? func tableView(tableView:UITableView, titleForHeaderInSection
? ? ? ? section:Int)->String?
? ? {
? ? ? ? var headers = ?self.adHeaders!;
? ? ? ? return headers[section];
? ? }
? ? // UITableViewDataSource協議中的方法,該方法的返回值決定指定分區的尾部
? ? func tableView(tableView:UITableView, titleForFooterInSection
? ? ? ? section:Int)->String?
? ? {
? ? ? ? let data = self.allnames?[section]
? ? ? ? return "有\(data!.count)個控件"
? ? }
? ??
? ??
? ? //創建各單元顯示內容(創建參數indexPath指定的單元)
? ? func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
? ? {
? ? ? ? let identify:String = "SwiftCell";
? ? ? ??
? ? ? ? /// 同一形式的單元格重復使用。
? ? ? ? let secno = indexPath.section;
? ? ? ? var data = self.allnames?[secno];
? ? ? ? if (0 == secno)
? ? ? ? {
? ? ? ? ? ? let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath);
? ? ? ? ? ? cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator;
? ? ? ? ? ??
? ? ? ? ? ? cell.imageView?.image = UIImage(named: "1");
? ? ? ? ? ? cell.textLabel?.text = data![indexPath.row];
? ? ? ??
? ? ? ? ? ? return cell;
? ? ? ? }
? ? ? ??
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? let adcell = UITableViewCell(style: .Subtitle, reuseIdentifier: "SwiftCell");
? ? ? ? ? ? adcell.textLabel?.text = data![indexPath.row];
? ? ? ? ? ? adcell.detailTextLabel?.text = "這是\(data![indexPath.row])的說明";
? ? ? ? ? ??
? ? ? ? ? ? return adcell;
? ? ? ? }
? ? }
? ??
? ? // UITableViewDelegate 方法,處理列表項的選中事件
? ? func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
? ? {
? ? ? ? self.tableView!.deselectRowAtIndexPath(indexPath, animated: true)
? ? ? ??
? ? ? ? let itemString = self.ctrlnames![indexPath.row]
? ? ? ??
? ? ? ? let ?alert = UIAlertController(title: "提示", message: "你選擇了:\(itemString)", preferredStyle: UIAlertControllerStyle.Alert);
? ? ? ? let sureAction = UIAlertAction(title: "確定", style: UIAlertActionStyle.Default, handler: {(action)->Void in});
? ? ? ? alert.addAction(sureAction);
? ? ? ??
? ? ? ? presentViewController(alert,animated:true, completion:nil);
? ? ? ??
? ? }
? ??
? ? override func didReceiveMemoryWarning() {
? ? ? ? super.didReceiveMemoryWarning()
? ? ? ??
? ? ? ? // Dispose of any resources that can be recreated.
? ? }
}

原文鏈接:https://blog.csdn.net/HK_5788/article/details/50808625

欄目分類
最近更新