0

我想在不同的类中设置 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];}

谢谢和对不起我的英语。

4

2 回答 2

0

Class2你做的时候

Class1 *class = [[Class1 alloc]init];

这会创建一个新实例,Class1然后您设置它的 alpha(然后根据您的 ARC 设置,这个新实例会被破坏或泄漏)。这不是您想要的,因为您已经拥有Class1应该更改的现有实例。这意味着您需要对实例的引用(指针)。

创建Class2实例时,应为其提供对Class1实例的引用。Class2应该有一个属性来存储引用。


所以在你的ViewController课堂上你应该实现prepareForSegue:sender:. ProvaViewController这将为您提供(via 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];
    }
}

在此处阅读指南,尤其是“将数据发送到细节场景”部分。

于 2013-07-02T23:38:24.163 回答
0

当你创建 class1 实例 Class1 *class = [[Class1 alloc]init]; 类没有链接 Livello2Image 出口,Livello2Image 是 nil。

于 2013-07-03T00:34:46.193 回答