2011-02-10 65 views
0

晚上好, 这是问题,[self.view addSubview:pauseView]; 在将pauseView加载到当前视图之前BOOL isPaused被转换为false,然后出现子视图。我试图将该变量的值由于使用暂停视图而改为false,但由于它不在当前类上,所以我无法执行此操作。 我知道这个话题已经覆盖在计算器上,但我仍然无法解决我的问题。如果我能解决这个问题,它将解决我的另外3个应用程序中的同样的问题。访问控制器变量或方法从视图子视图类

真诚, Sonic555gr

回答

0

定义isPaused得到如在定义isPaused得到的类的属性(我们称之为马西德威):


// inside MasterView.h 
@property (nonatomic,assign) BOOL isPaused;

然后让你的子视图pauseView自定义UIView子类(姑且称之为PauseView)并在这个子类中定义了一个名为MasterView的属性:MasterView:


// inside PauseView.h 
@property (nonatomic,assign) MasterView *master

然后当你alloc/init哟乌尔pauseView只是设置该属性:


// somewhere inside MasterView.m 
PauseView *pauseView = [[PauseView alloc] initWithFrame:frame]; 
pauseView.master=self; 

最后,在你的PauseView类,在你想改变isPaused得到属性代码的角度来看,这样做:


// somewhere in PauseView.m 
master.isPaused=YES
+0

现在我明白,如果我传递给它的子视图之一,我的主控制器的一个实例的引用,然后我可以操控任何变量!你清理了我的头,为此我感谢你! :D – 2011-02-11 06:17:56

0

你真的应该有一个考虑一下你的架构,并尝试将你的应用程序逻辑从UIViews转移回控制器(即代表可能是一个不错的选择,但不可能知道没有看到更多的代码和你想要达到的目标)。

如果你坚持操纵UIView中的变量,你需要在初始化时将你的viewController的引用传递给pauseView。

因此,在你PauseView类,你可以创建一个自定义的初始化器:

-(id)initWithFrame:(CGRect)frame andViewController:(id)vc { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Any other custom initialisation here 
    } 
} 
相关问题