UIImage VIew没有加载图片?

时间:2011-08-28 23:59:06

标签: iphone uiimageview uiimage

我的MyCartViewController上有一个UIImage。我的BlackFacePlatesViewController上有一个按钮。我想要这个按钮将MyCartViewController上的图像设置为另一个图像,但我似乎无法让它工作。这是我在MyCartViewController上设置图像按钮的代码:

修改

我在VC2中有1个BOOL变量,当在VC1中按下按钮时,我设置了BOOL并创建了VC2。然后在VIEWWILLAPPEAR方法中,我按照惯例设置了图像。这是代码:谢谢

- (IBAction)outlet1 {
MyCartViewController * imageCart = [[MyCartViewController alloc]init];
imageCart.displayImage = YES;

}

用户按下的按钮^

这是切换页面:

- (IBAction)myCart:(id)sender; {
MyCartViewController * first = [[MyCartViewController alloc]init];
first.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:first animated:YES];
[first release];

}

这是VC2中的VIEWWILLAPPEAR方法:

-(void)viewWillAppear:(BOOL)animated{
if (self.displayImage == YES) {
    UIImage * myImage = [UIImage imageNamed:@"Paddle_3.png"];
    [outletImageView setImage:myImage];
}

}

这会起作用吗?非常感谢帮助每个人!!!

2 个答案:

答案 0 :(得分:1)

您没有正确分配对象cartcart2cart无关,除了是类似的类。您应该在头文件中创建一个实例变量UIImage,其中包含您要在下一个UIView中使用的图像,并在您使用presentModalViewController:时设置它。试试这个。在你的.h文件中,

@interface MyCartViewController : UIViewController {
  UIImage * imageForNextView;
}

在您的.m文件中,

- (IBAction)outlet1:(id)sender; {
  imageForNextView = [UIImage imageNamed:@"Paddle_1.png"];
}

- (IBAction)outlet2:(id)sender; {
  imageForNextView = [UIImage imageNamed:@"Paddle_2.png"];
}

- (IBAction)myCart:(id)sender; {
  MyCartViewController * cart2 = [[MyCartViewController alloc]init];
  cart2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
  cart2.newImage.image = imageForNextView;
  [self presentModalViewController:cart2 animated:YES];
  [cart2 release];
}

我制作了2个按钮方法来说明根据按下哪个按钮切换图像的点。请记住imageNamed:缓存UIImage,所以如果你有很多,你可能必须开始研究其他加载方法,所有这些方法都可以找到here。这应该可以解决你的问题。

编辑 试试这个。在你的.h文件中,

@interface MyCartViewController : UIViewController {
  NSString * nameOfImage;
  UIImageView * imageView;
}

@property (nonatomic, retain) NSString * nameOfImage;

在.m文件中,

@synthesize nameOfImage;

- (void)viewDidLoad; {
  [super viewDidLoad];
  imageView.image = [UIImage imageNamed:nameOfImage];
}

然后,当您按下视图时,请尝试:

- (IBAction)myCart:(id)sender; {
  MyCartViewController * cart2 = [[MyCartViewController alloc]init];
  cart2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
  cart2.nameOfImage = @"Paddle_2.png";
  [self presentModalViewController:cart2 animated:YES];
  [cart2 release];
}

Edit2: This是一个关于如何使用UISplitViewController的教程,它有类似的想法,你按下{{ 1}},它会更改另一个UITableViewCell中的图像。您应该仔细研究一下,看看它是否有助于您的项目。

另外,试试:

UIView

这是转移到新- (IBAction)myCart:(id)sender; { MyCartViewController * cart2 = [[MyCartViewController alloc]init]; cart2.nameOfImage = @"Paddle_2.png"; [self pushViewController:cart2 animated:YES]; [cart2 release]; } 的另一种方法,可能会有效。

希望有帮助!

答案 1 :(得分:0)

您确定这行代码实际执行了吗?您在调试时还是使用NSLog检查了吗? 如果没有,则检查对动作'outlet1'的引用。

什么是购物车? 什么是cart.newimage? 那些链接到UIImagaeView的那些是“下一页”的一部分吗?

您可能需要通过setNeedsDisplay强制重绘。

假设你的cart.newImage是UIImageView对象:

[cart.newimage setNeedsDisplay]; //might do the trick. 

但是,这是一个真正理解问题的代码视图。