繁体   English   中英

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

[英]IBAction to set UIImageview image in second View Controller?

我正在尝试设置一些内容,其中来自view controller 1IBAction将使用标签来区分所按下的按钮,从而在View Controller 2's viewDidLoad设置ImageView图像。...类似(不是精确的代码...只是将其散列在其中我的头):

在View Controller 1中:

-(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"];
}

在View Controller 2中:

-(void)viewDidLoad {

ViewController2ImageView.image = [UIImage imageNamed:@"?.png"];
}

问题是如何从IBAction获取信息以传递给第二个视图控制器,并让viewDidLoad方法加载正确的图像。

我见过一些将数据转换为NSString并以这种方式传递的示例,但是我真的想知道是否有更好的方法可以解决此问题。

到目前为止,我已经能够通过将一些应用程序整合到Google中来,但是这已经让我挠头了几天。

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

谢谢!

在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方法中执行以下操作

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

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

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

您好,您可以简单地使用以下类型进行多种操作:1)您可以编写方法

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

    在第二个视图中写入此方法,然后从第一个视图中调用,然后在该方法调用时将该图像名称存储在第二个本地变量中,如下所示

    • (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]; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM