IBAction在第二个View Controller中设置UIImageview图像?

时间:2011-12-09 02:54:37

标签: iphone objective-c ios xcode ipad

我正在尝试设置IBAction来自view controller 1 ImageView View Controller 2's图像viewDidLoad -(IBAction)buttonpressed:(id)sender { if (button.tag == 1) { ViewController2ImageView.image = [UIImage imageNamed:@"image1.png"]; }else if (button.tag == 2) { ViewController2ImageView.image = [UIImage imageNamed:@"image2.png"]; } 图像-(void)viewDidLoad { ViewController2ImageView.image = [UIImage imageNamed:@"?.png"]; } 使用标记来区分按钮压缩....有点像(不是确切的代码......只是在脑海中挖出来):

在View Controller 1中:

IBAction

在View Controller 2中:

viewDidLoad

问题是如何从NSString传递给第二个视图控制器并让{{1}}方法加载正确的图像。

我见过将数据转换为{{1}}并以这种方式传递的示例,但我真的想知道是否有更好的方法来解决这个问题。

到目前为止,我已经能够以谷歌的方式将几个应用程序放在一起了,但是这让我在几天后摸不着头脑。

任何帮助或建议的代码都会有所帮助!即使只是推动了正确的方向。

谢谢!

3 个答案:

答案 0 :(得分:1)

在viewController1中按下按钮时,请执行以下操作:

-(IBAction)buttonpressed:(id)sender {
    if (button.tag == 1) {
        [[NSUserDefaults standardUserDefaults] setObject:@"image1.png" 
            forKey:@"viewController2SelectedImageKey"];
    } else if (button.tag == 2) {
        [[NSUserDefaults standardUserDefaults] setObject:@"image2.png" 
            forKey:@"viewController2SelectedImageKey"];
    } else {
        //set some default string for the image
        [[NSUserDefaults standardUserDefaults] setObject:@"yourDefaultImage.png" 
            forKey:@"viewController2SelectedImageKey"];
    }
}

然后在viewController2的viewDidLoad方法中执行类似 this 的操作:

- (void)viewDidLoad {
    ViewController2ImageView.image = [UIImage imageNamed:[[NSUserDefaults 
        standardUserDefaults] objectForKey:@"viewController2SelectedImageKey"]];
    //other setup
}

此代码将字符串设置为NSUserDefaults plist中的键(我使用的键是@“viewController2SelectedImageKey”,但您可以使用任何您喜欢的字符串),viewController2在其viewDidLoad方法中引用该字符串并使用该字符串作为图像文件的名称。

答案 1 :(得分:0)

为什么不使用NSString *imageName属性将文件名传递给View Controller 2?

答案 2 :(得分:0)

嗨您可以使用以下多种类型进行操作 1)你可以编写方法

  • (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle )nibBundleOrNil andImageName:(NSString )ImageName;

    在第二个视图中写下这个mehod&从第一个视图调用,当此方法调用时,将此图像名称存储在第二个局部变量中,如下所示

    • (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle )nibBundleOrNil andImageName:(NSString )ImageName { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if(self){     //自定义初始化     //局部变量赋值     imageName = ImageName; } 回归自我; }

然后在你的代码中传递它意味着你的

  • (void)viewDidLoad { ViewController2ImageView.image = [UIImage imageNamed:imageName]; }

2)第二种类型是在secound视图中创建imageName Varibale并给它@property和@synthesize它,而不是在下面使用它

 SecoundView *ObjSecoundView=[[ObjSecoundView alloc] initWithNibName:@"SecoundView" bundle:nil];
    ObjSecoundView.imageName=@"Image1.png";//put ur dynamic image name
    [self.navigationController  pushViewController:ObjSecoundView animated:YES];

传递此信息并在viewdid加载方法中使用,如下所示

  • (void)viewDidLoad { ViewController2ImageView.image = [UIImage imageNamed:imageName]; }