Swift代理方法的使用

開始之前,先普及一下Protocol協議及委托代理(Delegate)傳值,不清楚的可以先看看

1.代理方法

這里先上代碼了

①創建一個代理方法

protocol FirstViewControllerDelegate{

fun firstDelegate()

}

上面為swift聲明的最簡單的一種代理格式

@objc protocol FirstViewControllerDelegate: NSObjectProtocol{

optional func firstDelegate(returnString:String)

}

在這個代理的聲明中,可以明顯看出,增加了一些額外的修飾符

1》引入@objc是為了引入 optional,用 optional 修飾代理方法,那么這個方法就變成可選方法,無論在代理對象中是否實現,都不受影響。
2》引入 NSObjectProtocol 是因為我們如果想用 weak 修飾代理屬性,需要繼承自這個類,這里有一篇關于 weak 修飾 Delegate,防止循環引用的文章,不明白的可以看看

②聲明一個代理對象

 weak var delegate: FirstViewControllerDelegate?

這里用 weak 修飾,防止循環引用的產生

③觸發代理事件

 if self.delegate!.respondsToSelector(Selector("firstDelegate:")){
     self.delegate!.firstDelegate!("delegate")
 }

1》self.delegate!.respondsToSelector(Selector("firstDelegate:"))方法來判斷是否有對象執行代理事件
2》self.delegate!.firstDelegate("delegate")觸發代理事件

④在代理的實現控制器中引入代理

class ViewController: UIViewController,FirstViewControllerDelegate

與 Object-C 不同,只需要“,”添加即可

⑤實現代理方法

    func firstDelegate(returnString: String) {
        print(returnString)
    }

不知道是不是我的打開方式有問題~在 swift 里邊,好多 Object-C 里邊的智能補全,在這兒都不管用了自己慢慢打吧

好吧,我也是個 swift 小萌新,如果各位親友好的解決方法,請告知,在這兒提前謝過了
分享一個我學習 swift 的網站,里面包含了swift里邊的一些基礎知識,有需要的可以看看

swift 學習資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容