麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

IOS頁面間得傳值方式

2019-11-14 20:25:29
字體:
來源:轉載
供稿:網友
一.通過Delegate來傳遞數據

本節主要來講解如何使用委托delegate在不同窗口之間傳遞數據,具體內容來看下面的詳細內容。

比如: 在窗口1中打開窗口2,然后在窗口2中填入一個數字,這個數字又回傳給窗口1。

窗口1

IOS開發使用委托delegate在不同窗口之間傳遞數據

窗口2

IOS開發使用委托delegate在不同窗口之間傳遞數據

窗口2的結果傳遞給窗口1

IOS開發使用委托delegate在不同窗口之間傳遞數據

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

@PRotocol UIViewPassValueDelegate  - (void)passValue:(NSString *)value;  @end 

這個protocol 就是用來傳遞值

2、在窗口1的頭文件里,聲明delegate

復制代碼
復制代碼
#import <UIKit/UIKit.h> #import "UIViewPassValueDelegate.h"  @interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate> {      UITextField *_value;  }  @property(nonatomic, retain) IBOutlet UITextField *value;  - (IBAction)buttonClick:(id)sender;  @end 
復制代碼

并實現這個委托

- (void)passValue:(NSString *)value  {    self.value.text = value;      NSLog(@"the get value is %@", value);  } 

button的Click方法,打開窗口2,并將窗口2的delegate實現方法指向窗口1。

復制代碼
復制代碼
- (IBAction)buttonClick:(id)sender  {      ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]];      valueView.delegate = self;      [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];      [self presentModalViewController:valueView animated:YES];  } 
復制代碼
復制代碼

第二個窗口的實現

.h 頭文件

復制代碼
復制代碼
#import <UIKit/UIKit.h> #import "UIViewPassValueDelegate.h"   @interface ValueInputView : UIViewController {       NSObject<UIViewPassValueDelegate> * delegate;      UITextField *_value;  }  @property(nonatomic, retain)IBOutlet UITextField *value;  @property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;  - (IBAction)buttonClick:(id)sender;  @end 
復制代碼
復制代碼

.m實現文件

復制代碼
復制代碼
#import "ValueInputView.h"  @implementation ValueInputView  @synthesize delegate;  @synthesize value = _value;  - (void)dealloc {      [self.value release];      [super dealloc];  }   - (IBAction)buttonClick:(id)sender  {      [delegate passValue:self.value.text];      NSLog(@"self.value.text is%@", self.value.text);      [self dismissModalViewControllerAnimated:YES];           }  - (void)didReceiveMemoryWarning {      // Releases the view if it doesn't have a superview.      [super didReceiveMemoryWarning];            // Release any cached data, images, etc. that aren't in use.  }   - (void)viewDidUnload {      [super viewDidUnload];      // Release any retained subviews of the main view.      // e.g. self.myOutlet = nil;  }    @end 
復制代碼

 

 
 
 二.利用單例實現不同界面間的數據傳輸

 首先寫一個單例類,繼承NSObject

  check.h文件中

 @property(strong ,nonatomic) UITable * Table; @property(strong ,nonitomic) UITextFiled * Text; +(check*)shareDataModle;

  check.m中

  //定義一個靜態的checke類的對象,并賦給一個空值

  static check * dataModle = nil;  +(check*)shareDataModle  {      if (dataModle == nil)      {          dataModle = [[check alloc]init];      }  }        

  //在數據源將數據賦值給單例的對象

-(void)checkDataSource{  [check shareDatamodle].Lable = @"15";  [check shareDatamodle].Text = @"22";}

  //引入單例的頭文件 ,在對應定的方法中給對應的對象賦值

  //將單例中的屬性值傳給當前界面中的接收對象,到此就完成了數據的傳送和接收

  -(void)viewWillAppear:(BOOL)animated  {      [super viewWillAppear:animated];      self.numberLable.text=[check shareDataModle].Lable;      self.danHao.text = [check shareDataModle].Text;  }

 

三.iOS開發中使用[[UIapplication sharedApplication] openURL:] 加載其它應用

 

在iOS開發中,經常需要調用其它App,如撥打電話、發送郵件等。UIApplication:openURL:方法是實現這一目的的最簡單方法,該方法一般通過提供的url參數的模式來調用不同的App。

通過openURL方法可以調用如下應用:

調用瀏覽器(Safari Browser)

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:google.com"]]; 
 調用谷歌地圖(Google Maps)
NSString *addressText = @"7 Hanover Square, New York, NY 10004";  addressText = [addressText stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];  NSString* urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];  

調用郵件客戶端(Apple Mail) 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://[email protected]"]];  

撥號(Phone Number) 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://6463777303"]];  

調用短信(SMS)

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://466453"]];  

調用應用商店(AppStore)

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&amp;amp;mt=8"]];  
 
 
四.使用NSUerDefaults或文件持久化數據后實現頁面間數據的傳遞
 
IOS下可以使用NSUserDefaults、sqlite、CoreData幾種常用的方式來存儲數據,其中NSUserDefaults用來存儲類似用戶的配置等這些的數據,后兩者用戶存儲大批量和比較復雜的數據。NSUserDefault的使用比較簡單:  
NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults];

創建NSUserDefaults對象之后即可往里面添加數據,它支持的數據類型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系統定義的數據類型,如果要存放自定義的對象(如自定義的類對象),則必須將其轉換成NSData存儲:

NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]  [mySettingData setObject:arr forKey:@"arrItem"];  [mySettingData setObject:@"admin" forKey:@"user_name"];  [mySettingData setBOOL:@YES forKey:@"auto_login"];  [mySettingData setInteger:1 forKey:@"count"];  
往NSUserDefaults添加數據后,它們就變成了全局的變量,App中即可讀寫NSUserDefault中的數據:
NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];   NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);  NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);  NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);  

如果想刪除某個數據項,可以使用removeObjectForKey刪除數據:

 [mySettingData removeObjectForKey:@"arrItem"];   
需要注意的是,NSUserDefaults是定時把緩存中的數據寫入磁盤的,而不是即時寫入,為了防止在寫完NSUserDefaults后程序退出導致的數據丟失,可以在寫入數據后使用synchronize強制立即將數據寫入磁盤:
[mySettingData synchronize];  
運行上面的語句后,NSUserDefaults中的數據即被寫入到.plist文件中,如果是在模擬器上運行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iphone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目錄下面找到一個文件名為YOUR-Bundle_Identifier.plist的plist文件,用Xcode打開該文件,可以看到剛才寫入的數據。
 
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线a毛片免费视频观看 | 久久99精品久久久久久小说 | 国产日产精品久久久久快鸭 | 亚州综合一区 | 日日狠狠久久偷偷四色综合免费 | 日韩毛片在线看 | 99re热精品视频 | 少妇色诱麻豆色哟哟 | av在线免费看网址 | 欧美成人免费电影 | 欧洲精品色 | 久久久久久久久久综合 | 久草手机视频在线观看 | 爱爱插插视频 | 欧美一级免费视频 | 日本xxxx视频 | 一级毛片特黄 | 久久综合久久精品 | 欧美成人一级 | 国产成人精品免费视频大全最热 | 色就色 综合偷拍区91网 | 日本在线不卡一区二区 | 中文字幕伦乱 | 久草在线最新免费 | 在线播放一区二区三区 | 国产一区二区午夜 | 免费a级片在线观看 | 九一免费国产 | 欧美一级在线免费 | 日韩精品中文字幕一区二区 | 国产日韩欧美一区 | 国产午夜亚洲精品午夜鲁丝片 | 亚洲影视中文字幕 | 国产免费一区二区三区视频 | 亚洲第一页中文字幕 | 欧美日韩在线视频一区二区 | 高清视频91 | 国产一级毛片av | 日韩999 | 欧美一级α | 欧美a级毛片 |