iOS 标签未更新

iOS Label Not Updating

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

其中一个 ViewController(称为 optionsViewController)具有用于消息的 IBOutlet LABEL。我将其用作我可以更新的屏幕上的一种调试消息。

TabBarController 调用名为 UpdateDeviceStatus 的 optionsViewController 函数

当应用程序启动时,STATUS 标签在 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 是正确的。但是屏幕上的标签不会更新。我设置了断点,它只进入 viewDidLoad 一次,它进入 UpdateDeviceStatus 一次。

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

你实现了 UITabBarControllerDelegate 委托了吗?

并检查您的 class 是否确认 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。