gpt4 book ai didi

ios - 如何从另一个 View Controller 更改 UILabel 一个 View Controller ?

转载 作者:行者123 更新时间:2023-12-01 18:57:03 27 4
gpt4 key购买 nike

我对 Xcode 比较陌生,并试图通过搜索找到答案,但没有运气。

我的应用程序有 5 个 View Controller ,从 V1 到 V5,它们嵌入在一个选项卡栏 Controller 中。每个 View Controller 都有一个到一个相同的 Setup Menu View Controller 的 segue。菜单更改了 View Controller 上的一些标签。我使用委托(delegate)来确保调用菜单的 View Controller 在您离开菜单时使用新设置进行更新。但是,这允许我只修改 View Controller 上调用菜单 Controller 的标签,而不是其他 4 个标签。

我从 Storyboard工作。有没有一种简单的方法可以从 V1(反之亦然)在 V2、V3、V4 和 V5 上设置 UILabels,或者更好的是,从菜单 View Controller (未嵌入在选项卡栏中)设置 V1 到 V5 上的标签 Controller )?

我看到了一些可以帮助的东西here ,但这对于我想要的来说似乎相当复杂。我需要的标签更改非常简单,并且都是预定义的。每次在选项卡式应用程序中切换选项卡时都会调用一个方法吗?类似于 ViewDidLoad?

最佳答案

这听起来像是 NSNotificationCenter 的好时机。您将让 MenuViewController 生成一个通知,其中包含应在其他 View Controller 中更新的新数据:

// User has updated Menu values
[[NSNotificationCenter defaultCenter] postNotificationName:@"MenuDataDidChangeStuffForLabels" object:self userInfo:@{@"newLabelValue" : labelText}];

在您的 V1、V2 等中,您可以在 viewDidLoad 方法中使用以下代码添加订阅这些通知:
- (void)viewDidLoad {
[super viewDidLoad];
// Subscribe to NSNotifications named "MenuDataDidChangeStuffForLabels"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLabelText) name:@"MenuDataDidChangeStuffForLabels" object:nil];
}

任何使用该代码订阅的对象都会在 MenuViewController 发布具有该名称的通知时调用 updateLabelText 方法。通过该方法,您可以获得新的标签值并将其分配给您的标签。
- (void)updateLabelText:(NSNotification *)notification {
NSString *newText = notification.userInfo[@"newLabelValue"];
myLabel.text = newText;
}

关于ios - 如何从另一个 View Controller 更改 UILabel 一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com