1. iOS開發(fā)中使用[[UIApplication sharedApplication] openURL:] 加載其它應(yīng)用
在iOS開發(fā)中,,經(jīng)常需要調(diào)用其它App,,如撥打電話、發(fā)送郵件等,。UIApplication:openURL:方法是實(shí)現(xiàn)這一目的的最簡(jiǎn)單方法,該方法一般通過提供的url參數(shù)的模式來調(diào)用不同的App,。
通過openURL方法可以調(diào)用如下應(yīng)用:
調(diào)用瀏覽器(Safari Browser)
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:google.com"]];
調(diào)用谷歌地圖(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]];
調(diào)用郵件客戶端(Apple Mail)
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://[email protected]"]];
撥號(hào)(Phone Number)
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://6463777303"]];
調(diào)用短信(SMS)
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://466453"]];
調(diào)用應(yīng)用商店(AppStore)
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&mt=8"]];
2. NSUserDefaults讀取和寫入自定義對(duì)象
- NSString *string = [NSString stringWithString @"data is here"];
- NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
- [data setObject:string forKey:@"key"];
- NSString *value;
- value = [data objectForKey:"key"];
但是并不是所有的東西都能往里放的,。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
3. protocol 和 delegate 回調(diào)函數(shù)傳值
一,、說明 1.協(xié)議聲明了可以被任何類實(shí)現(xiàn)的方法 2.協(xié)議不是類,它是定義了一個(gè)其他對(duì)象可以實(shí)現(xiàn)的接口 3.如果在某個(gè)類中實(shí)現(xiàn)了協(xié)議中的某個(gè)方法,,也就是這個(gè)類實(shí)現(xiàn)了那個(gè)協(xié)議,。 4.協(xié)議經(jīng)常用來實(shí)現(xiàn)委托對(duì)象。一個(gè)委托對(duì)象是一種用來協(xié)同或者代表其他對(duì)象的特殊對(duì)象,。 5:委托,,就是調(diào)用自己定義方法,別的類來實(shí)現(xiàn),。 6.新特性說明 @optional預(yù)編譯指令:表示可以選擇實(shí)現(xiàn)的方法 @required預(yù)編譯指令:表示必須強(qiáng)制實(shí)現(xiàn)的方法
二,、定義
.h
- @protocol ContactCtrlDelegate
- - (void)DismissContactsCtrl;
- - (void)CallBack:(NSString *)str; //回調(diào)傳值
- @end
-
- @interface ContactsCtrl : UIViewController {
- id <ContactCtrlDelegate> delegate;
- }
- @property (nonatomic, assign) id <ContactCtrlDelegate> delegate;
.m
三、Demo
二級(jí)窗口(子窗口)UIViewController subclass
1,、ContactsCtrl.h
- #import <UIKit/UIKit.h>
-
- //定義協(xié)議
- @protocol ContactCtrlDelegate
-
- - (void)DismissContactsCtrl; //回調(diào)關(guān)閉窗口
- - (void)CallBack:(NSString *)str; //回調(diào)傳值
-
- @end
-
-
- @interface ContactsCtrl : UIViewController
- {
- __weak IBOutlet UITextField *passData; //textfield
- id <ContactCtrlDelegate> delegate; //開放delegate
- NSString *passedVal; //從主窗口獲取傳值
- }
-
- @property(nonatomic,retain)id <ContactCtrlDelegate> delegate;
- @property(nonatomic,retain)NSString *passedVal;
-
- - (IBAction)cancelBtn:(id)sender;
-
- @end
2,、ContactsCtrl.m
- @implementation ContactsCtrl
- @synthesize delegate;
- @synthesize passedVal;
-
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view from its nib.
- passData.text = passedVal;
- }
-
- //調(diào)用協(xié)議中的方法
- - (IBAction)cancelBtn:(id)sender
- {
- [delegate CallBack:[NSString stringWithFormat:@"%@",passData.text]];
- [delegate DismissContactsCtrl];
- }
一級(jí)窗口(父窗口)
3、ViewController.h
- #import <UIKit/UIKit.h>
- #import "ContactsCtrl.h" //引入二級(jí)文件
-
- @interface ViewController : UIViewController <ContactCtrlDelegate>
- {
- ContactsCtrl *contactsView; //定義
- __weak IBOutlet UITextField *textfield;
- }
-
- @property(nonatomic,retain) ContactsCtrl *contactsView;
-
- - (IBAction)addContactsView:(id)sender;
-
- @end
4,、ViewController.m
- #import "ViewController.h"
-
- @implementation ViewController
- @synthesize contactsView;
-
- - (IBAction)addContactsView:(id)sender
- {
- ContactsCtrl *contactView = [[ContactsCtrl alloc] initWithNibName:nil bundle:nil];
- self.contactsView = contactView;
- contactsView.delegate = self; //設(shè)置委托
- contactsView.passedVal = textfield.text;
- [self presentModalViewController:contactsView animated:YES];
- }
-
- //實(shí)現(xiàn)ContactCtrlDelegate協(xié)議中的方法
- - (void)DismissContactsCtrl
- {
- [contactsView dismissModalViewControllerAnimated:YES];
- }
-
- - (void)CallBack:(NSString *)str
- {
- textfield.text = str;
- }
本實(shí)例是在:http://www./blog-21-13.html 基礎(chǔ)上修改而成,。
參考:delegate和protocol
|