从其他类的方法更改视图的属性

时间:2010-12-20 12:53:36

标签: iphone methods

我正在尝试远程调整对象myImageView的{​​{1}}到alpha 0类来自另一个类MyViewController(它是一个NSObject子类)。

Assistant

中的

Assistant.h
#import <Foundation/Foundation.h> @class MyViewController; @interface Assistant : NSObject { MyViewController *myViewController; UIImageView *button; } - (void)adjustAlpha:(id)sender; @property (nonatomic, retain) UIImageView *button;

中的

Assistant.m

该方法确实被调用,但#import "MyViewController.h" @implementation Assistant @synthesize button; - (id)init { self = [super init]; if (self) { myViewController = [[MyViewController alloc] init]; NSLog(@"alloced?: %@", myViewController ? @"YES" : @"NO"); } return self; } - (void)adjustAlpha:(id)sender { NSLog(@"method called"); myViewController.myImageView.alpha = 0; } 没有改变,为什么?我需要修理的地方?谢谢你阅读^ _ ^

修改

这是MyViewController类:

MyViewController.h

myViewController.myImageView.alpha

MyViewController.m

@class Assistant;

@class MyAppAppDelegate;

@interface MyViewController : UIViewController <UITextViewDelegate, UIScrollViewDelegate> 
{
   UIImageView *myImageView;
   Assistant *assistant;
}
@property (nonatomic, retain) UIImageView *myImageView;

这个问题变得复杂,需要一些实验,所以只要挂在那里,就会在我有时间的时候说清楚。对于开发人员遇到了同样的问题:声明你需要在单例类中访问的对象,可以从任何其他类轻松访问,以及圣诞快乐!

2 个答案:

答案 0 :(得分:1)

仅当myImageViewMyViewController类的.h文件中声明为全局范围变量(也称为iVar)并且其属性为{{1}时,此方法才有效在.m。

中匹配(nonatomic, retain)

如果这听起来像你正在做的那样,那么请你发布@synthesize h和m文件的内容。

答案 1 :(得分:1)

如果您拥有像Thomas所描述的所有内容,您可以检查主线程上是否调用了adjustAlpha方法吗?