Iphone UIView如何访问UIViewController的属性?
简而言之,程序基本上是这样的: =================================== 有一个UIViewController,它有一个实例变量NSInteger: 我在UIViewController.h文件中将其声明为:Iphone UIView如何访问UIViewController的属性?,iphone,ios,uiview,uiviewcontroller,ios4,Iphone,Ios,Uiview,Uiviewcontroller,Ios4,简而言之,程序基本上是这样的: =================================== 有一个UIViewController,它有一个实例变量NSInteger: 我在UIViewController.h文件中将其声明为: NSInterger *theNum; ... @property NSInteger *theNum; 然后,我在它的.m文件中合成它: @synthesize theNum; -(void)doSomething { NSInteger *myNu
NSInterger *theNum;
...
@property NSInteger *theNum;
然后,我在它的.m文件中合成它:
@synthesize theNum;
-(void)doSomething {
NSInteger *myNum = self.superview.theNum; //error: request for member 'theNum' in something not a structure or union
// do something
}
此UIViewController的视图(UIView)有一个doSomething方法:需要访问theNum的值
以下是此“视图”的.m文件中的代码:
@synthesize theNum;
-(void)doSomething {
NSInteger *myNum = self.superview.theNum; //error: request for member 'theNum' in something not a structure or union
// do something
}
==============================
那么,如何从UIViewController到其UIView获取theNum的值呢
感谢您的先进!祝你们圣诞快乐 我想说,通常谁将
doSomething
作为视图控制器,而视图只是drawStuff
但是无论如何,superview
不是视图控制器,而是您将此视图作为子视图添加到的视图。视图通常没有指向视图控制器的任何指针,因为通常假定它基本上只绘制自身及其子视图
如果您确实希望视图本身成为
doSomething
,您可以在视图类上添加viewController
属性,并在视图控制器创建视图时进行设置。我想说,通常谁将doSomething
将成为视图控制器,而视图只是drawstup
但是无论如何,superview
不是视图控制器,而是您将此视图作为子视图添加到的视图。视图通常没有指向视图控制器的任何指针,因为通常假定它基本上只绘制自身及其子视图
如果确实希望视图本身
doSomething
,可以在视图类上添加viewController
属性,并在视图控制器创建视图时进行设置。您需要将数字从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
}
您需要将号码从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
}
向视图中添加视图控制器是不明智的。@Joshpul我同意,这就是我写前四段的原因。向视图中添加视图控制器是不明智的。@Joshpul我同意,这就是我写前四段的原因。