2010-11-21 28 views
-1

在以下示例中,当触摸某个方法的屏幕被调用时,该方法将一个数传递给由MyViewController存储的视图控制器。唯一的问题是视图控制器不会存储这个数字,因为我想在以后的另一种方法中使用它。请帮忙。谢谢。如何通过方法传递和存储信息

MyViewController.h

@class MyView; 

@interface ViewController : UIViewController { 
    int number; 
} 

-(void)assignNumber(int)sentNumber; 

@property int number; 

MyViewController.m

-(void)loadView { 
    MyView *aView = [[MyView alloc] initWithFrame:wholescreen]; 
    self.view = aView; 
    [aView release]; 
} 

-(id)initWithNibName...... { 
    number = 0; 
} 

-(void)assignNumber:(int)sentNumber { 
    number = sentNumber; 
} 

MyView.h & MyView.m

默认与TouchesBegin,当触及[viewController assignNumber:5];

+0

你运行什么检查来确定5是否被存储在数字中? – 2010-11-21 05:41:13

回答

1

如果你没有声明@synthesize,你将无法访问viewController内部的数字。尝试添加

@synthesize number; 

到MyView.m的顶部;这创造了制定者和获得者。然后,你可以用

[viewController setNumber:5]; 

取代你

[viewController assignNumber:5]; 

通话,并用viewController.number[viewController number]访问它。

+0

'@ synthesize'仅仅告诉编译器为一个属性实现访问器。你必须已经在类的'@interface'(在头文件中)声明了该属性,并且* *表示将该属性公开给其他类的对象。相反,只要你在'@interface'中声明了属性(或者它的访问器方法),你可以实现访问器,但是你可以让编译器去执行它('@ synthesize')或者自己实现它们;它会与使用该属性的其他对象没有区别。 – 2010-11-21 05:21:29

0

您可能希望@合成变量nu在你的ViewController实现中。