2011-12-09 106 views
1

我试图建立一些地方从view controller 1IBAction将在View Controller 2'sviewDidLoad使用标签按下....等(未确切的代码的东西...只是哈希它在我的头上的按钮来区分设置ImageView图像):IBAction在第二个视图控制器中设置UIImageview图像?

在视图控制器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"]; 
} 

在视图控制器2:

-(void)viewDidLoad { 

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

问题w ^应该如何让IBAction的信息传递给第二个视图控制器,并使viewDidLoad方法加载正确的图像。

我见过将数据转换为NSString并将其传递给我的例子,但是我真的想知道是否有更好的方法来解决这个问题。

我已经能够通过将几个应用程序集合到目前为止我的方式,但是这让我挠了脑袋几天了。

任何帮助或建议的代码将是有帮助的!即使它只是在一个正确的方向推动。

谢谢!

回答

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方法中做这样的事情这样

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

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

+0

您的欢迎。请记住,您可以从应用程序的任何位置访问NSUserDefaults,因此如果您在viewController2中显示的图像对于在应用程序过程中决定其他内容很重要,则可以在任何位置访问@“viewController2SelectedImageKey”。 –

0

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

0

嗨,您可以与许多类型的简单地做如下 1)你可以写的方法

  • (ID)initWithNibName:(的NSString *)nibNameOrNil包(一个NSBundle )nibBundleOrNil andImageName:(的NSString)ImageName;

    写入此mehod在从所述第一视图中的第二视图&呼叫,并且当在该时间存储器这个方法调用此图像名称在第二本地变量如下面

    • (ID)initWithNibName:(的NSString * )nibNameOrNil包:(NSBundle )nibBundleOrNil andImageName :(NSString)ImageName { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if(self){ //定制初始化 //局部变量赋值 imageName = ImageName; } return self; }

,然后再通过它在我们的代码装置在乌尔

  • (无效)viewDidLoad中{ ViewController2ImageView.image = [UIImage的imageNamed:imageName]; }

2)第二类型是在谢胜利视图创建imageName Varibale并给@property和@synthesize它比在低于

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

通此使用它,并在viewdid负载方法使用如下面

  • (无效)viewDidLoad中{ ViewController2ImageView.image = [UIImage的imageNamed:imageName]; }
+0

感谢您的回复!这也适用于我正在尝试使用NSUserDefaults,似乎是一个更有效的方法来解决它。 –

相关问题