UITableView --Swift
一. 在 ViewController 中新增 UITableView
1. 建立一個 UIViewcontroller 檔案
//
// RefreshVC.swift
// 網路請求Demo
//
// Created by ZE KANG on 2017/8/21.
// Copyright © 2017年 LRY. All rights reserved.
//
import UIKit
import Alamofire
var kSize=UIScreen.main.bounds;
var dataTable:UITableView!
var itemStringArr=["企劃部","軟體部","諮詢部","人事部","後勤部","產品部"]
class RefreshVC: UIViewController,UITableViewDelegate,UITableViewDataSource {
var titleArr = Array<String>();
var picArr = [String]();
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
initUI();
methodForSwift();
}
func initUI() -> Void {
self.title = "重新整理"
self.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1);
}
//MARK:- Networking
/// Swift 的 Alamofire
func methodForSwift() -> Void {
// let urlStr = "\(SERVICE_URL)type=\(TOP)&key=\(APPKEY)"
let parameters = [
"pag": "2",
"id": "144f248abf9789911c8ab1e903ec0f10"
]
Alamofire.request(kUrl, method: .post, parameters: parameters).responseJSON { (returnResult) in
print("secondMethod --> 引數 --> returnResult = \(returnResult.value as Any)")
//字典接收 JSon 資料
let dataDict = returnResult.value as! [String : Any] ;
//從字典中根據 key 提取 value 為陣列的資料
let dataArr = dataDict["data"] as! [Any];
for dic in dataArr{
print("title 數值: ",dic);
//從陣列中提取字典
let anDict = dic as! [String : Any];
//從字典中提值
let userFaceStr = anDict["userFace"] as! String ;
print("提取單個圖片=地址: ",userFaceStr);
let picStr = anDict["userFace"] as! String ;
let titleStr = anDict["title"] as! String ;
self.titleArr.append(titleStr);
self.picArr.append(picStr);
}
// print("title 數租: ",self.titleArr);
//主執行緒重新整理 UI
DispatchQueue.main.async {
self.makeTable();
self.forInArrayHandel();
}
}
}
//MARK:- forIn 陣列
func forInArrayHandel() -> Void {
for title in self.titleArr{
print("title 數值: ",title);
}
}
// MARK:- 建立table
func makeTable (){
dataTable=UITableView.init(frame: CGRect(x: 0.0, y: 64, width: kSize.width, height: kSize.height-64), style:.plain)
dataTable.backgroundColor = UIColor.groupTableViewBackground;
dataTable.delegate=self;//實現代理
dataTable.dataSource=self;//實現資料來源
dataTable.showsVerticalScrollIndicator = false
dataTable.showsHorizontalScrollIndicator = false
self.view.addSubview(dataTable)
//tableFooter
dataTable.tableFooterView = UIView.init()
//MARK:註冊 xib Cell(沒有 xib)
// dataTable .register(RefreshCell.classForCoder(), forCellReuseIdentifier: "identti")
//MARK:註冊 xib Cell(使用 xib)
let cellNib = UINib(nibName: "RefreshCell", bundle: nil)
dataTable.register(cellNib, forCellReuseIdentifier: "identti")
}
// MARK: -table代理
//段數
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
//行數
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return itemStringArr.count
return self.titleArr.count;
}
//行高
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
return 80
}
/*
//頭部高度
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
//底部高度
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
*/
//cell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
/*
let indentifier = "CellA"
var cell:TableViewCellA! = tableView.dequeueReusableCell(withIdentifier: indentifier) as? TableViewCellA
if cell == nil {
cell=TableViewCellA(style: .default, reuseIdentifier: indentifier)
}
return cell!
*/
//MARK: 沒有建立 TabelViewCell 檔案,直接在本 VC 中複用
/*
let identifier="identtifier";
var cell=tableView.dequeueReusableCell(withIdentifier: identifier)
if(cell == nil){
cell=UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: identifier);
}
cell?.textLabel?.text = self.titleArr[indexPath.row];
cell?.detailTextLabel?.text = "待新增內容";
cell?.detailTextLabel?.font = UIFont .systemFont(ofSize: CGFloat(13))
cell?.accessoryType=UITableViewCellAccessoryType.disclosureIndicator //右邊小箭頭
return cell!
*/
//MARK:另外建立了 TabelViewCell 檔案
let cell:RefreshCell = tableView.dequeueReusableCell(withIdentifier: "identti", for: indexPath) as! RefreshCell
cell.titleLabel?.text = self.titleArr[indexPath.row];
//定義URL物件
let url = URL(string: self.picArr[indexPath.row])
//從網路獲取資料流
let data = try! Data(contentsOf: url!)
//通過資料流初始化圖片
let newImage = UIImage(data: data)
cell.picImg.image = newImage;
print("圖片: ",self.picArr[indexPath.row])
return cell;
}
//選中cell時觸發這個代理
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
print("indexPath.row = SelectRow第\(indexPath.row)行")
}
//取消選中cell時,觸發這個代理
public func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath){
print("indexPath.row = DeselectRow第\(indexPath.row)行")
}
//允許編輯cell
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
//右滑觸發刪除按鈕
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
return UITableViewCellEditingStyle.init(rawValue: 1)!
}
//點選刪除cell時觸發
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
print("indexPath.row = editingStyle第\(indexPath.row)行")
}
}
2. 建立 UITableViewCell 檔案
//
// RefreshCell.swift
// 網路請求Demo
//
// Created by ZE KANG on 2017/8/21.
// Copyright © 2017年 LRY. All rights reserved.
//
import UIKit
class RefreshCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var picImg: UIImageView!
//MARK:- 沒有建立xib 檔案初始化方法
/*
override init(style: UITableViewCellStyle, reuseIdentifier: String?){
super . init(style: style, reuseIdentifier: reuseIdentifier)
// self.contentView .addSubview(self.titleLable)
}
//懶載入label
lazy var titleLable:UILabel = {
let titleLable = UILabel(frame:CGRect.init(x: 100, y: 0, width: 100, height: 30))
print("----------888")
titleLable.backgroundColor = .green
titleLable.textAlignment = NSTextAlignment.center
return titleLable
}( )
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
*/
// MARK:- 建立了 xib 的所使用的方法
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
//此處寫 xib 的初始化程式碼
}
//懶載入label
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
self.picImg.backgroundColor = UIColor.yellow;
}
}
3. 要點:
P1. 在 VC 中
- 直接複用
- 有建立 xib 的 cell
- 沒有 xib 的 cell
P2: 在 TabelViewCell 中
xib拖控制元件
沒xib拖控制元件
效果圖:
相關文章
- Swift iOS: UITableView的使用SwiftiOSUIView
- iOS Swift UITableView的scrollToRow的”坑”iOSSwiftUIView
- 優雅的使用UITableView(Swift 中)UIViewSwift
- iOS Swift UITableView的scrollToRow的"坑"iOSSwiftUIView
- Swift UITableView巢狀UICollectionView點選事件衝突(點選事件穿透)SwiftUIView巢狀事件穿透
- Swift21/90Days – 動態變化的 UITableView 頭部SwiftUIView
- UITableViewUIView
- UITableView的坑UIView
- UITableView優化UIView優化
- Swift 踩坑筆記 —— UITableView Cell初始化和重新整理的問題探討Swift筆記UIView
- UITableView/UICollectionView使用技巧UIView
- UITableView+FDTemplateLayoutCell 庫UIView
- UITableView使用詳解UIView
- UItableView效能優化UIView優化
- 優雅的使用UITableViewUIView
- iOS UITableView 修改屬性iOSUIView
- UITableview 常見問題UIView
- UITableView 鍵盤遮擋UIView
- UITableview巢狀UITableView案例實踐(仿淘寶商品詳情頁實現)UIView巢狀
- iOS UITableView側滑刪除iOSUIView
- 10.12UITableView(cell)UIView
- UITableView 常用屬性及方法UIView
- LPDMvvmKit 系列之 UITableView 的改造MVVMUIView
- UITableView+FDTemplateLayoutCell 原始碼探究UIView原始碼
- UITableView複雜介面處理UIView
- UITableview navbar漸變觀察者UIView
- UITableView 屬性用法詳解UIView
- UITableView優化那點事UIView優化
- 去除UITableView多餘的seperatorUIView
- 你真的會用UITableView嘛UIView
- iOS中UITableView效能優化iOSUIView優化
- UITableView效能優化-中級篇UIView優化
- 記一次UITableView優化UIView優化
- UItableview的頭部粘連效果UIView
- 如何寫好一個UITableView(上)UIView
- UITableView動態計算Cell高度UIView
- 優雅的使用UITableView(OC 上)UIView
- iOS開發系列--UITableView全面解析iOSUIView