iOS 标签未更新

问题描述

所以我有一个 UITabBarController,它下面有 4 个视图。

具有用于消息的 IBOutlet 标签的那些 ViewControllers 之一(称为 optionsViewController)。我将其用作屏幕上一种可以更新的调试消息。

TabBarController 调用名为 UpdateDeviceStatus 的 optionsViewController 函数

当应用启动时,状态标签在 viewDidLoad 函数中设置为“BLAH”。

但是当 TabBarController 调用 UpdateDeviceStatus 时,标签不会更新。

@synthesize device_firmware_version,device_status;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.device_status.text = @"BLAH";
}

- (void) UpdateDeviceStatus:(Nsstring *)status
{
    NSLog(@"Updating Status: %@",status);
    self.device_status.text = status;
}

Label在Storyboard中连接,在头文件中连接是(nonatomic,retain)

@property (nonatomic,retain) IBOutlet UILabel *device_status;

如果我们查看 LOG 文件,变量 status 是正确的。但屏幕上的 LABEL 不会更新。我设置了断点,它只进入 viewDidLoad 一次,它进入 UpdateDeviceStatus 一次。

我遗漏了一些明显的东西,stackoverflow ......请帮忙。

解决方法

您是否实现了 UITabBarControllerDelegate 委托?

并检查您的课程是否确认了 TabBarController 委托

此代码可以帮助您

extension <#UIViewController#> : UITabBarControllerDelegate {
  override func tabBar(_ tabBar: UITabBar,didSelect item: UITabBarItem) {

  }
}
,

我猜“self.device_status”是零。

在这一行设置断点。

self.device_status.text = status;

并检查 self.device_status 是否为零。您可以在 Xcode 的控制台区域输入“po self.device_status”并按“Enter”。

最可能的原因是在加载 optionsViewController 之前调用了 UpdateDeviceStatus。