我的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];
}
}
这会起作用吗?非常感谢帮助每个人!!!
答案 0 :(得分:1)
您没有正确分配对象cart
,cart2
与cart
无关,除了是类似的类。您应该在头文件中创建一个实例变量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.
但是,这是一个真正理解问题的代码视图。