我想在另一个类中设置UIImageView的alpha。在Class1.h中,我有一个UIImageView需要在IBAction中的Class2.m中进行更改。 UIImageView的alpha最初为1.这是我的代码,尽管没有错误但仍无效。
Class1.h
{
IBOutlet UIImageView *Livello2Image;
}
-(void)setAlpha:(int)a;
Class1.m
- (void)setAlpha:(int)a
{
Livello2Image.alpha = a;
}
Class2.m
-(IBAction)ALP{
Class1 *class = [[Class1 alloc]init];
[class setAlpha: 0];}
谢谢,对不起我的英语。
答案 0 :(得分:0)
当你做Class2
时
Class1 * class = [[Class1 alloc] init];
创建Class1
的新实例,然后设置其alpha(然后根据您的ARC设置销毁或泄露此新实例)。这不是您想要的,因为您已经有一个您应该更改的现有Class1
实例。这意味着你需要一个实例的引用(指针)。
创建Class2
实例时,应该为其提供Class1
实例的引用。 Class2
应该有一个属性来存储引用。
因此,在ViewController
课程中,您应该实施prepareForSegue:sender:
。这将为您提供ProvaViewController
的新实例(通过segue.destinationViewController
)。您需要将该属性添加到ProvaViewController
(@property (strong, nonatomic) ViewController *viewController;
),然后使用该属性更改alpha([self.viewController Trasparenza:0];
)。
虽然......你的'返回'按钮似乎确实以模态方式推送新的视图控制器而不是实际返回(关闭当前视图,因为它也以模态方式呈现)。所以你真的需要考虑你的视图控制器结构,因为它现在有点疯狂......
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:...]) {
[(ProvaViewController *)segue.destinationViewController setViewController:self];
}
}
阅读指南here,特别是“将数据发送到详细信息场景”部分。
答案 1 :(得分:0)
创建class1实例时 Class1 * class = [[Class1 alloc] init]; 类没有链接Livello2Image插座,Livello2Image是零。