Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIView如何访问UIViewController的属性?_Iphone_Ios_Uiview_Uiviewcontroller_Ios4 - Fatal编程技术网

Iphone UIView如何访问UIViewController的属性?

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

简而言之,程序基本上是这样的:

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

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

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

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我同意,这就是我写前四段的原因。