ios - 方法被调用但不更新 UI

ios - Method is called but doesn't update UI

在 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;

}

在我的另一个 class 中,我会这样做:

MainViewController *class = [[MainViewController alloc]init]; [class startTrackingParking:hourTrack :minuteTrack :secondTrack];

出于某种原因 NSlog 调用,但按钮 alpha 未更新?为什么会这样?这是在 classes 和调用方法之间传递数据的错误方式吗?

当你这样做时 -

MainViewController *class = [[MainViewController alloc]init];
[class startTrackingParking:hourTrack :minuteTrack :secondTrack];

您正在分配 MainViewController 的新实例,但不是从 NIB 或 Storyboard 初始化它,因此它没有任何控件。这也意味着它实际上不会显示在屏幕上。你可能有这个视图控制器的一些其他实例正在设置和呈现(大概它是你故事板中的初始视图控制器,因为它被称为 MainViewController)但那不是这个。

此外,由于这是一个局部变量,一旦该方法退出,它将被丢弃。

当你这样做时:

MainViewController *class = [[MainViewController alloc]init];
[class startTrackingParking:hourTrack :minuteTrack :secondTrack];

您创建了 class MainViewController 的一个实例。与 class 关联的视图未被初始化。

视图控制器延迟加载它们的视图。第一次访问视图 属性 会加载或创建视图控制器的视图。 相反,您可以使用 UIStoryBoard 方法 instantiateViewControllerWithIdentifier:

看看at the docs.