ios - 调用Method但不更新UI

时间:2015-11-25 06:12:40

标签: ios objective-c parameter-passing

在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不会更新?为什么会这样?这是在类和调用方法之间传递数据的错误方法吗?

2 个答案:

答案 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