iOS開發基礎 delegate 委託

2021-10-23 17:24:14 字數 2305 閱讀 6627

**設計模式,是ios中一種訊息傳遞的方式,由**物件、委託者、協議組成。

宣告協議:

nextviewcontroller.h

#import ns_assume_nonnull_begin

//宣告協議

@protocol nextviewcontrollerdelegate //協議中必須完成的方法

- (void)sendvalue:(nsstring *)string;

@end

@inte***ce nextviewcontroller : uiviewcontroller

//持有delegate的為委託者

@property (nonatomic, weak) iddelegate;

@end

ns_assume_nonnull_end

委託者(指定**需要完成的方法):

nextviewcontroller.m

#import "nextviewcontroller.h"

@inte***ce nextviewcontroller ()

//委託者

@property (nonatomic, strong) uitextfield *sendvaluetextfield;

@property (nonatomic, strong) uibutton *backbutton;

@end

@implementation nextviewcontroller

- (void)viewdidload

- (void)clickbtn:(uibutton *) sender

}}@end

**者:實現協議中的方法

viewcontroller.m

#import "viewcontroller.h"

#import "nextviewcontroller.h"

@inte***ce viewcontroller ()//**

@property (nonatomic, strong) uitextfield *gettextfield;

@property (nonatomic, strong) uibutton *nextbutton;

@end

@implementation viewcontroller

- (void)viewdidload

- (void)pushnext:(uibutton *)sender

- (void)sendvalue:(nonnull nsstring *)string

@end

協議

#import ns_assume_nonnull_begin

//宣告**

@protocol funviewdelegate - (void)viewdelegatefunc;

@end

@inte***ce myview : uiview

//持有**

@property (nonatomic, weak) idviewdelegate;

@end

ns_assume_nonnull_end

委託者

#import "myview.h"

@implementation myview

//定義方法

- (void) touchesbegan:(nsset*)touches withevent:(uievent *)event

}@end

**者

@inte***ce viewcontroller ()//**類

@end

@implementation viewcontroller

- (void)viewdidload

#pragma mark - viewdelegatefunc**方法

- (void) viewdelegatefunc

@end

**實現了不同檢視之間的資料互動,只有某一事件觸發才會被呼叫,在使用**時,**者要遵循**,設定**,實現**方法,只有設定了**,才能呼叫**方法。

委託類中需要宣告相應協議,型別為id,用nonatomic和weak進行修飾,防止迴圈引用。

在委託類的實現檔案中,需要觸發**事件的地方通過self.delegate來呼叫方法

在**類的實現檔案中,需要匯入標頭檔案,並遵循**。

參考:ios中delegate的使用

ios 設定委託delegate

為了進行頁面傳值,也可以用委託的方法。下面以時間控制項為例。1.首先,在.h 檔案設定委託 import protocol datepickerviewdelegate class datepickerview inte ce datepickerview uiview property stron...

iOS開發基礎

1 乙個應用程式是怎麼啟動的?當我們基於xcode模版建立應用程式時,應用程式啟動時大部分的環境引數會被自動設定。uikit框架提供了乙個應用程式需要構建和管理它的使用者介面的所有類 啟動 結束應用程式,控制介面和觸點事件 uikit是cocoa touch提供的眾多物件導向框架中的乙個。cocoa...

ios中關於delegate(委託)

ios中關於delegate 委託 的使用心得 直覺 從開始從事oc工作到現在大概1年多了,從當初接觸oc的 協議 的不明白,到現在 中隨處可見的委託,協議,其中感悟頗多。首先,大家應該都明白的是委託是協議的一種,顧名思義,就是委託他人幫自己去做什麼事。也就是當自己做什麼事情不方便的時候,就可以建立...