如何通过parentviewcontroller将数据从一个视图传递到另一个视图

时间:2013-07-31 04:59:44

标签: iphone ios objective-c cocoa-touch

我在read.m类中有数据。我创建了父视图控制器进行读取。所以,父母观点是home.m.         在home.m我使用现有的模态视图控制器获取零售商类。我希望通过home.m。

将数据从read.m发送到retailer.m
read.m 

-(void)requestFromtblViews:(id)navigation forIndex:(int)index forText:(NSString *)text withDBdata:(NSArray *)DBdata{
    [DBdata objectAtIndex:index];
}

-(void)showRetailerInfo 
{
    //NSLog(@"show retailer Information is....");
    [self.ReadViewContent  GetshowRetailerInfo:self];
}

home.m

-(void)GetshowRetailerInfo:(id)currentview;
{
    // NSLog(@"get retailer info....");
    Retailer_Info = [[RetailerInfoViewController alloc]initWithNibName:@"RetailerInfoViewController" bundle:[NSBundle mainBundle]];
    Retailer_Info.view.frame = CGRectMake(0, 0, 320, 480);
    [Retailer_Info loadDefaultView];
    [self presentViewController:Retailer_Info animated:YES completion:nil];
    [Retailer_Info release];
}

3 个答案:

答案 0 :(得分:1)

使值或变量全局化。在Appdelegate中声明变量,然后将其导入到您想要的位置。您还可以创建单例类并导入其值。这就像将值从一个视图传递到另一个视图。由于变量将保持不变,但值将根据您的代码而变化。

请看这里: -

Passing Data between View Controllers

http://oleb.net/blog/2012/02/passing-data-between-view-controllers/

答案 1 :(得分:0)

使用委托协议。

在Home.h

@protocol RetailerDelegate <NSObject>

-(void) passDataToRetailer:(NSArray *)array;

@end

@interface Home:UIViewController
{
 Read readObj;
}
@property(assign, nonatomic) id <RetailerDelegate> delegate;

在Home.m

//call method where you want to pass data
[delegate passDataToRetailer:readObj.array];

在RetailerInfoViewController.h

@interface RetailerInfoViewController : UIViewController<RetailerDelegate>
{
 NSArray *localArray;
}

在RetailerInfoViewController.m

//in viewdidload
Home *parent = [self presentingViewController];
parent.delegate = self;

-(void) passDataToRetailer:(NSArray *)array
{
//here you receive your data
}

希望这可以帮助你...

答案 2 :(得分:0)

如果您想首先访问另一个类的属性,则需要将该.h文件导入到您想要的位置并创建该类的对象。并访问哪种方法...

假设您需要将第二个视图控制器属性访问到FirstViewController中。然后将SecondViewController.h文件定义为FirstViewController.and make object

SecondViewController *controller = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:Nil];

controller.method;

//方法你想在这里访问什么......