简而言之,该计划基本上就是这样:
===================================
有一个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?
感谢先进!祝大家圣诞快乐。
答案 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
属性,并在视图控制器创建视图时进行设置。