在另一个类中设置UIImageView的alpha

时间:2013-07-02 22:32:45

标签: ios objective-c uiimageview

我想在另一个类中设置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];}

谢谢,对不起我的英语。

2 个答案:

答案 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是零。