将数据传递给ViewController问题

时间:2012-11-12 16:27:44

标签: ios objective-c iphone xcode

我的任务是通过单击FirstViewController上的按钮在SecondViewController中的UIImageView中设置背景图像。

FirstViewController.h:

 #import <UIKit/UIKit.h>
 #import "SecondViewController.h"

 @class SecondViewController;

 @interface ViewController : UIViewController
 {
    SecondViewController *secondViewData;
 }

 // pointer to second view 
 @property (nonatomic, strong) SecondViewController *secondViewData;

 // buttons
 - (IBAction)changeBack:(id)sender;

 @end
FirstViewController.m中的

按钮方法:

- (IBAction)changeBack:(id)sender {
    SecondViewController *svc = [[SecondViewController alloc] init];

    self.secondViewData = svc;

    svc.back = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];
    svc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

    [self presentViewController:svc animated:YES completion:nil];
}

SecondViewController.h:

 #import <UIKit/UIKit.h>
 #import "FirstViewController.h"

 @interface SecondViewController : UIViewController

 @property (strong, nonatomic) IBOutlet UIImageView *back;

 @end

返回 - 它是SecondViewController中的IBOutlet UIImageView。 我还在SecondViewController.m中导入了FirstViewController.h。 我试图将字符串传递给SecondViewController - 它在SecondViewController中的-ViewDidLoad中记录得很好,但是无法设置UIImageView。

4 个答案:

答案 0 :(得分:2)

首先,请阅读Resource Management in View Controllers

我想,问题是首先你通过属性设置UIImageView,然后在模态控制器中加载视图时从xib设置它。

答案 1 :(得分:1)

你可以这样做。 您可以在secondviewcontroller.h中找到UIImageView的出口

        IBOutlet UIImageView *imgView;

也属性并合成此

       @property(nonatomic, retain)  IBOutlet UIImageView *imgView;  

在FirstViewController.xib中连接第二个ViewController的插座

在你的firstviewcontrollem.m中实现这个你要在secondViewController UIImageView中设置图像

    self.secondViewData.imgView.image = [UIImage imageNamed:@"1.png"];

答案 2 :(得分:1)

这一行是问题所在:

svc.back = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];

您正在设置回新分配的图像视图,而不是它在IB中连接的图像视图。只需将该行更改为:

svc.back.image = [UIImage imageNamed:@"1.png"]];

答案 3 :(得分:1)

你需要在第二个视图控制器上拍摄另一个imageview。我将其命名为imgView.Let原始图像视图为bgView。

enter code here

//在secondviewcontroller.h

@property(非原子,强)IBOutlet UIImageView * bgView;

@property(非原子,强)IBOutlet UIImageView * imgView;

//在secondviewcontroller.m

//在viewDidLoad

self.bgView.image = self.imgView.image;

//在firstviewcontroller.m

//按钮动作应该是这样的

- (IBAction为)buttonPressed:(ID)发送方 {

SecondViewController *secondVC=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

secondVC.imgView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"hue.png"]];

[self presentModalViewController:secondVC  animated:YES];

}

试试这个。