我有一个整数变量(time)在一个视图控制器中,我需要在另一个视图控制器中使用其值。这是代码:
MediaMeterViewController
// TRP - On Touch Down event, start the timer
-(IBAction) startTimer
{
time = 0;
// TRP - Start a timer
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
[timer retain]; // TRP - Retain timer so it is not accidentally deallocated
}
// TRP - Method to update the timer display
-(void)updateTimer
{
time++;
// NSLog(@"Seconds: %i ", time);
if (NUM_SECONDS == time)
[timer invalidate];
}
// TRP - On Touch Up Inside event, stop the timer, decide stress level, display results
-(IBAction) btn_MediaMeterResults
{
[timer invalidate];
NSLog(@"Seconds: %i ", time);
ResultsViewController *resultsView = [[ResultsViewController alloc] initWithNibName:@"ResultsViewController" bundle:nil];
[self.view addSubview:resultsView.view];
}
在 ResultsViewController 中,我想处理time根据其价值
结果视图控制器
- (void)viewDidLoad
{
if(time < 3)
{// Do something}
else if ((time > 3) && (time < 6))
{// Do something else}
//etc...
[super viewDidLoad];
}
我有点不清楚@property 和@synthesize 何时是必要的。在这种情况下也是这样吗?任何帮助将不胜感激。
谢谢!
托马斯
Declare time
作为财产MediaMeterViewController
:
@property (nonatomic) NSInteger time;
每当需要访问另一个对象中的实例变量时,都应该将实例变量声明为属性,并且在声明属性时必须始终使用@synthesize
(合成该属性的 getter 和 setter)。
设置时还要注意time
in MediaMeterViewController
你必须始终使用self.time
代替time
。例如,time = 0;
应该self.time = 0;
.
访问time
从你的ResultsViewController
,你会这样做:
- (void)viewDidLoad
{
[super viewDidLoad];
if (mmvc.time < 3)
{
// Do something
}
else if ((mmvc.time > 3) && (mmvc.time < 6))
{
// Do something else
}
// etc...
}
Where mmvc
是对你的参考MediaMeterViewController
目的。希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)