IOS開發使用委託delegate在不同視窗之間傳遞資料

來源:互聯網
上載者:User

IOS開發使用委託delegate在不同視窗之間傳遞資料

本文轉自:http://mobile.51cto.com/iphone-284116.htm

IOS開發使用委託delegate在不同視窗之間傳遞資料是本文要介紹的內容,主要是來講解如何使用委託delegate在不同視窗之間傳遞資料,具體內容來看詳細內容。在IOS開發裡兩個UIView視窗之間傳遞參數方法有很多,比如

1、使用SharedApplication,定義一個變數來傳遞.

2、使用檔案,或者NSUserdefault來傳遞

3、通過一個單例的class來傳遞

4、通過Delegate來傳遞。

前面3種方法,暫且不說,這次主要學習如何使用通過Delegate的方法來在不同的UIView裡傳遞資料

比如: 在視窗1中開啟視窗2,然後在視窗2中填入一個數字,這個數字又回傳給視窗1。

1、首先定義個一委託UIViewPassValueDelegate用來傳遞值

1 @protocol UIViewPassValueDelegate  

2 // 必選方法

3 - (void)passValue:(NSString *)value;  

4 // 可選方法

@optional

5 -(void)omethod;

6 @end 

這個protocol 就是用來傳遞值

2、在視窗1的標頭檔裡,遵守delegate協議,並實現delegate方法,

//a.h

7 #import <UIKit/UIKit.h> 

8 #import "UIViewPassValueDelegate.h"  

10 @interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate> 

11 {  

12     UITextField *_value;  

13 }  

14 @property(nonatomic, retain) IBOutlet UITextField *value;  

15 - (IBAction)buttonClick:(id)sender;  

16 @end 

在a.m中實現這個委託的必選方法

17 - (void)passValue:(NSString *)value  

18 {  

19   self.value.text = value;   

20 } 

21 -(void)optionalMethod{

22 }

button的Click方法,開啟視窗2,並將視窗2的delegate實現方法指向視窗1。

23 - (IBAction)buttonClick:(id)sender  

24 {  

25     ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]];  

26     valueView.delegate = self;  // 將a類中的self傳遞給b類的delegate

27     [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];  

28     [self presentModalViewController:valueView animated:YES];  

29 } 

第二個視窗的實現

b.h 檔案

30 #import <UIKit/UIKit.h> 

31 #import "UIViewPassValueDelegate.h"  

32  

33 @interface ValueInputView : UIViewController {  

34  

35     NSObject<UIViewPassValueDelegate> * delegate; 

36     UITextField *_value;  

37 }  

38 @property(nonatomic, retain)IBOutlet UITextField *value;  

39 @property(nonatomic, assign) NSObject<UIViewPassValueDelegate> * delegate;  //這裡用assign而不用retain是為了防止引起循環參考。

40 - (IBAction)buttonClick:(id)sender;  

41 @end 

b.m檔案

42 #import "ValueInputView.h"  

43 @implementation ValueInputView  

44 @synthesize delegate;  

45 @synthesize value = _value;  

46 - (void)dealloc {  

47     [self.value release];  

48     [super dealloc];  

49 }  

50  

51 - (IBAction)buttonClick:(id)sender  

52 {  

53     [delegate passValue:self.value.text];  // 通過delegate調用代理方法

54     NSLog(@"self.value.text is%@", self.value.text);  

55     [self dismissModalViewControllerAnimated:YES];      

56      

57 }  

58 - (void)didReceiveMemoryWarning {  

59     // Releases the view if it doesn't have a superview.  

60     [super didReceiveMemoryWarning];  

61       

62     // Release any cached data, images, etc. that aren't in use.  

63 }  

64  

65 - (void)viewDidUnload {  

66     [super viewDidUnload];  

67     // Release any retained subviews of the main view.  

68     // e.g. self.myOutlet = nil;  

69 self.delegate = nil;

70 }  

71  

72  

@end 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.