1. 程式人生 > >swift3.0 如何優雅的自定義tableViewcell,最簡單的自定義cell,閉包事件傳遞,程式碼封裝。

swift3.0 如何優雅的自定義tableViewcell,最簡單的自定義cell,閉包事件傳遞,程式碼封裝。

一:最近在自學swift3.0,故而把OC中最簡單自定義cell的方法,照搬到swift試試。 下面說下設計思想。

 1.設計原理,提供介面。下面貼上控制器的程式碼

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // 1.提供類方法建立cell,預設就是複用好的了
        let cell = HCustomTableViewCell.customCell(tableView: tableView)
        // 2.設定資料(開發中傳遞model)
        cell.settingCellData(title: "當前是第:\(indexPath.row)行")
        // 3.事件傳遞(將封裝cell內部子控制元件的點選事件回撥控制器)
        cell.btnClickBlock = { () in
            print("點選了按鈕,當前是第:\(indexPath.row)行 ,且事件傳遞到了控制器內");
        }
        // 4. 返回cell。 這基本上能適用100%任何一個你需要的自定義cell的型別
        return cell
    }


      怎麼樣,感覺如何。。從此控制器裡再沒有複用等太多亂七八槽的程式碼,簡單到幾句程式碼搞定

  2.下面看下自定義cell裡面的兩個介面方法,一個類方法建立cell,一個是設定cell資料

 // MARK:- public
    public class func customCell(tableView : UITableView)->HCustomTableViewCell{
        let reuseIdentifier = "HCustomTableViewCell";
        var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
        if (cell == nil) {
            cell = HCustomTableViewCell(style: .default, reuseIdentifier: reuseIdentifier)
        }
        return cell as! HCustomTableViewCell
    }
    
    public func settingCellData(title : String) {
        titleLabel.text = title
    }

3。其次也就是閉包的屬性的設定,以及呼叫了。
 // 格式( (引數)-> (返回值) )
    public var btnClickBlock:( ()->() )?
 

   按鈕的點選事件

 @objc private func actionBtnClick(){
        btnClickBlock!()
    }


額:寫到這裡就完了,,有木有很簡單。。。程式學習之路,從精簡每一句程式碼開始

如果你喜歡這篇文章,或者有任何疑問,可以掃描第一個二維碼,加樓主好友哦

也可以掃第二個二維碼,關注樓主個人微信公眾號。這裡有很多生活,職業,技術相關的文章哦。歡迎您的到來。

微訊號:                                             公眾號



相關推薦

swift3.0 如何優雅定義tableViewcell簡單定義cell事件傳遞程式碼封裝

一:最近在自學swift3.0,故而把OC中最簡單自定義cell的方法,照搬到swift試試。 下面說下設計思想。  1.設計原理,提供介面。下面貼上控制器的程式碼 func tableView(_ tableView: UITableView, cellForRow

史上簡單教程:向第三方jar注入自己的程式碼

注意:全文極短,適用於各種反編譯小白,程式小白,讀完僅需2分鐘! 我們經常使用第三方庫,但當我們遇到一些個性化需求,第三方庫沒有預留介面的時候,怎麼辦? 比如我們專案中用到友盟的社會化分享元件,但是友盟的分享對話方塊實在是醜!而他們又沒有留下足夠的介面支援我

6.0動態許可權申請簡單卻容易被小白忽視的相容方式

       6.0剛出顯示,動態申請各種頭疼,之後出現各種封裝框架,但是本人一直使用的系統自帶的那一套,然後就是遇見各種品牌手機不同的申請過程。早期突然靈光一動想到的一種偷懶且相容性很高的方式,O(∩_∩)O哈哈~可能你只是沒想到,貼下程式碼,你想笑。     以申請短息

Android之——史上簡單定義開關按鈕的實現

很多時候,我們在很多無論是Android還是IOS的APP中都會遇到這樣的一種效果,有一個按鈕,我們點選一下,便會滑動一下,一會顯示“開”,一會顯示“關”,這便是開關按鈕了,比如:很多Android手機的設定功能裡,就有很多功能是用開關按鈕實現的,那麼這些開關按鈕時如何實

sealos2.0使用教程簡單kubernetesHA方案

概述 本文教你如何用一條命令構建k8s高可用叢集且不依賴haproxy和keepalived,也無需ansible。通過核心ipvs對apiserver進行負載均衡,並且帶apiserver健康檢測。 快速入門 sealos專案地址 準備條件 裝好docker並啟動docker 把離線安裝包 下載好拷貝到所

端口占用解決方案大全方便快速的解除端口被占用強制解除占用端口

強制解除端口占用 切換mysql windows 綠色環境搭建 解除端口占用 強制解除端口占用可以使用我最新開發的新版本PHPWAMP8.8.8.8(截止目前最新版)PHPWAMP最新版支持自定義Mysql版本和自定義PHP版本,是目前唯一集成了VC運行庫的真正純綠色軟件。最新版PHPWA

神級Java程序員 開車教你基礎開發簡單 微型Java Web框架

padding ont 目的 簡單 json 破解 apach java學習 web 介紹: 它是Java中的開放源代碼(Apache License)微型Web框架,具有最小的依賴性和快速的學習曲線。 該項目的目標是在Java中創建一個易於使用和破解的微型Web框架。

在MVC4.0加Easyui1.5.3的簡單方式

同時 技術 star 選項 cls 基本 data- art undle 新建MVC4.0 Web項目 當系統同時裝了VS2012和VS2013時,新建項目,在VisualC#模板點擊Web選項時,左邊會出現ASP.NET Web應用程序,這個Web程序是VS2013自帶的

thinkphp 5 自動生成模組簡單方式一句程式碼

  直接在專案入口檔案中加上最後一句就夠了     可以不依賴自動生成檔案,直接使用預設目錄生成模組,例如: // 定義應用目錄 define('APP_PATH', __DIR__ . '/../application/'); // 載入框架引

可以開啟組策略的情況下簡單的 本地組策略編輯器 重置

管理伺服器上面的組策略管理器,可能大家都會改,所以最好先匯出組策略配置:匯出列表,修改之前記住你改了什麼這是個好習慣。 進入正題:網上很多重置動作都很重,但是如果我能開啟組策略,這種情況下的重置就非常簡單了:   點選下圖所有設定: 點選狀態,兩次,直到已開啟的選

Java寫程式碼的區域簡單的概念

目錄 類 抽象類 介面 總結 類 特點: 能做實現類或子類,也能做超類。只能放屬性和方法。 public class Aoo{ //在這裡寫程式碼 private String name; //屬性 public v

PDF轉換為CAD簡單的方法是什麼?

PDF轉換為CAD,最簡單的方法是什麼?在工作中,我們經常會遇到要把CAD圖紙轉換成PDF的,但是也有的時候需要將PDF轉為CAD,那麼在CAD轉換器中PDF轉換CAD最簡單的方法是什麼?小夥伴們知道要怎麼來進行轉換嗎?那下面小編就使用迅捷CAD轉換器來教教大傢俱體操作步驟,想要了的朋友可以來看看。 第一步

PDF轉換為CAD簡單的方法是什麽?

roc 批量 到你 沒有 也有 vpd htm html ces PDF轉換為CAD,最簡單的方法是什麽?在工作中,我們經常會遇到要把CAD圖紙轉換成PDF的,但是也有的時候需要將PDF轉為CAD,那麽在CAD轉換器中PDF轉換CAD最簡單的方法是什麽?小夥伴們知道要怎麽來

解決插入U盤不顯示碟符問題有效簡單!!!

一、概述 u盤插入電腦突然間就不顯示碟符了,但是可以看到U盤已插入。上網找了搜了一下,有許多辦法解決。大約有重新安裝驅動、分配碟符、清理登錄檔等…但是這些都是假的,毫無作用,可能是個人的電腦不同,引發的原因也不同。找了許久終於找到了一個最有效,最簡單的辦法。 二、操作 1、快

遞迴實現乘方簡單型別揹包問題組合

目錄 乘方問題 揹包問題  組合 乘方問題   import java.util.Scanner; /** * 遞迴實現乘方問題 * @author Administrator * */ public class Pow{ @Suppres

Spring框架的事務管理之基於AspectJ的註解方式(重點掌握簡單的方式)

1. 步驟一:恢復轉賬的開發環境(具體開發環境實現見:https://www.cnblogs.com/wyhluckdog/p/10137283.html)2. 步驟二:applicationContext的基本配置為: <?xml version="1.0" encoding="UTF-8"?

Word刪除空白頁簡單有效的【解決方法】

                        Word刪除空白頁,最簡單有效的【解決方法】    經常用Word的朋友也許會遇到這種情況,比如在

初學者編譯Linux核心簡單ko模組

#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> MODULE_LICENSE("GPL"); static int __init helloko_init() {/* K

win10電腦啟用簡單的啟用方法

win10電腦啟用,最簡單的啟用方法 1)點選電腦左下角的“開始”圖示,然後我們找到“小娜”,並點選 1 2)然後在輸入欄中我們鍵入“CMD”,出現“命令提示符”的時候我們滑鼠右鍵“以管理員身份執行” 2 然後複製貼上以下命令: slmgr.vbs /upk 這時時候我們會發

CentOS6.5搭建MySQL主從複製讀寫分離(冷月宮主親自整理簡單明瞭)

CentOS6.5搭建MySQL主從複製,讀寫分離MySQL主從複製的優點:1、 如果主伺服器出現問題, 可以快速切換到從伺服器提供的服務,保證高可用性2、 可以在從伺服器上執行查詢操作, 降低主伺服器的訪問壓力3、 可以在從伺服器上執行備份, 以避免備份期間影響主伺服器的服