在MainViewController .h
文件中:
-(void)startTrackingParking:(int)hour :(int)minute :(int)second;
在MainViewController .m
文件中:
-(void)startTrackingParking:(int)hourTrack :(int)minuteTrack :(int)secondTrack {
NSLog(@"%d %d %d",hourTrack,minuteTrack,secondTrack);
//Set buttons alpha to 0
self.extendParking.alpha = 0;
self.bannerCancelButton.alpha = 0;
self.timeLeftLabel.alpha = 0;
}
在我的另一堂课中,我会这样做:
MainViewController *class = [[MainViewController alloc]init];
[class startTrackingParking:hourTrack :minuteTrack :secondTrack];
出于某种原因NSlog
调用,但按钮alpha不会更新?为什么会这样?这是在类和调用方法之间传递数据的错误方法吗?
答案 0 :(得分:1)
当你这样做时 -
MainViewController *class = [[MainViewController alloc]init];
[class startTrackingParking:hourTrack :minuteTrack :secondTrack];
您正在分配MainViewController
的新实例,但未从NIB或Storyboard初始化它,因此它不会有任何控件。这也意味着它实际上不会出现在屏幕上。您可能正在设置和显示此视图控制器的其他实例(可能它是故事板中的初始视图控制器,因为它被称为MainViewController
)但不是这个。
此外,由于这是一个局部变量,因此只要该方法退出就会被丢弃。
答案 1 :(得分:1)
当你这样做时:
MainViewController *class = [[MainViewController alloc]init];
[class startTrackingParking:hourTrack :minuteTrack :secondTrack];
您创建了类MainViewController
的实例。与类关联的视图未初始化。
视图控制器懒洋洋地加载视图。首次访问view属性会加载或创建视图控制器的视图。
相反,您可以使用UIStoryBoard
方法instantiateViewControllerWithIdentifier:
看看at the docs。