UIView如何访问UIViewController的属性?

时间:2010-12-22 19:27:12

标签: iphone ios uiview uiviewcontroller ios4

简而言之,该计划基本上就是这样:

===================================

有一个UIViewController,它有一个NSInteger的实例变量:

我在UIViewController .h文件中将其声明为:

NSInterger *theNum;
...
@property NSInteger *theNum;

然后,我在.m文件中合成它:

@synthesize theNum;

这个UIViewController的视图(UIView)有一个方法doSomething:需要访问theNum的值。

这是“view”的.m文件中的代码:

-(void)doSomething {

NSInteger *myNum = self.superview.theNum; //error: request for member 'theNum' in something not a structure or union

// do something

}

==============================

那么如何从UIViewController获取theNum的值到它的UIView?

感谢先进!祝大家圣诞快乐。

2 个答案:

答案 0 :(得分:2)

您需要将数字从UIViewController传递给UIView。控制器应该知道视图,而不是相反。

//SomeView.h
@interface SomeView : UIView
NSInteger theNum; 
//You have NSInteger *theNum. I am guessing you made that a pointer by accident
}

@property(assign) NSInteger theNum;

@end

//SomeViewController.m

-(void)viewDidLoad
{
   [super viewDidLoad];
   ((SomeView*)self.view).theNum = theNum;//This theNum belongs to the ViewController
}

答案 1 :(得分:-1)

我会说通常会doSomething成为视图控制器,而视图只是drawStuff

但无论如何,superview不是视图控制器,而是将此视图添加为子视图的视图。
视图通常没有任何指向视图控制器的指针,因为通常假设它基本上只是绘制自己及其子视图。

如果您确实希望视图本身为doSomething,则可以在视图类上添加viewController属性,并在视图控制器创建视图时进行设置。