关于多个ViewController之间进行数据传递的方法


在开发iOS程序时,发现其基本操作中,在多个ViewController之间进行数据传递是一个非常常用的功能,因此特总结。方法方面,其实挺多的,真是各有个的好吧。只要能够实现功能,使用哪些,应该由用户之际决定。


1、通过application delegate对象处理。


ChartMAppDelegate * mydelegat =[[UIApplication sharedApplication] delegate];

mydelegat.serverIP = serIpaddr.text;


    需要注意的是在delegate当中,需要是定set和get方法,或者使用property或synthersize


2、使用NSUserDefault


NSString * string = [NSString stringWithString:@"nihao"];


NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

[ud setObject:string forKey:@"mykey"];


读的时候参考如下代码:

NSString * value;

value = [ud objectForKey:@"mykey"];


3、使用在父窗口中获得子窗口设定的数据,这样可以采用定义委托的方式。第一窗口为父窗口,第二窗口为子窗口


 1.首先在父窗口中去定义个一委托UIViewPassValueDelegate用来传递值

 

@protocol UIViewPassValueDelegate

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

@end
 

2.在父窗口的头文件里,声明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方法,打开子窗口,并在子窗口中的delegate实现方法指向父窗口。

-  (IBAction)buttonClick:(id)sender
{
    ValueInputView 
* valueView  =  [[ValueInputView alloc] initWithNibName: @" ValueInputView "  bundle:[NSBundle mainBundle]];
    valueView.
delegate   =  self; // 把两个VC关联起来!
    [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]; // 具体的实现在第一个VC里。
    NSLog(
@" self.value.text is%@ " , self.value.text);
    [self dismissModalViewControllerAnimated:YES];    
   
}

-  ( void )viewDidUnload {
    [super viewDidUnload];
    
//  Release any retained subviews of the main view.
    
//  e.g. self.myOutlet = nil;
}



@end
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值