ios - viewDidLoad 与 viewDidAppear - 名称标签问题

标签 ios swift3 viewdidload viewdidappear

我在显示和更新用户名标签时遇到了这个问题。

用户 id 1 - ‘Felicia’

用户 id 2 - “Sam”

(第一个屏幕:默认用户是“Felicia”) 1st screen: default user is 'Felicia'

(第二个屏幕:将用户更改为“Sam”时) 2nd screen: when changed user to 'Sam'

(第 3 个屏幕:点击另一个屏幕后,用户名标签自动恢复为“Felicia”,而它应该是“Sam”) 3rd screen: after clicking to another screen, the username's label auto revert back to 'Felicia' when it supposed to be 'Sam' as user is not changed

我的理想输出是用户名的标签将保留为所选用户,除非用户发生更改,并且只要名称更新,也能够在侧面菜单栏上反射(reflect)名称标签。

在我的代码中,我尝试在 viewDidAppear 和 viewDidLoad 中添加我的方法(getUserInfo() 和 setUserNameLabel()),但是这两种情况都没有生成我想要的输出。

viewDidAppear

优点: - 名称标签将反射(reflect)所选用户名称的更新(用户可以更改其名称)

缺点: - 选择其他 View 时,名称标签将恢复为侧边菜单栏上用户 id 1 的名称

viewDidLoad

优点: - 选择其他 View 时,名称标签不会恢复为侧边菜单栏上用户 id 1 的名称

缺点 - 名称标签不会反射(reflect)所选用户名称的更新

最佳答案

您需要在侧边菜单 viewcontroller 中创建委托(delegate)或使用 NSNotificationCenter 来触发名称更改事件。

因为当您创建侧边菜单时,以便在此类 viewDidLoad 或任何其他方法在生命周期中调用一次。

通过 NSNotificationCenter 执行此操作的示例。

https://stackoverflow.com/a/24756761/3901620

关于ios - viewDidLoad 与 viewDidAppear - 名称标签问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948591/

相关文章:

ios - 如何在viewDidLoad中调整UILabel的大小

php - 向 iOS 设备发送数据

iphone - Debug模式和断点的 Xcode 问题

ios - UIMenuController 方法 setTargetRect :inView: not working in UITableView

iPhone/iOS : How Do I Tell What Localization The Phone is Using At Runtime?

ios - 如何获取触发 segue 的 View Controller

ios - 如何在创建新记录时使用 CloudKit 不延迟地更新 TableView 中的数据

iOS Swift 3 发布问题

swift - 使用 IBAction 但不使用 Swift 中的 viewDidLoad 的函数

swift - 在 viewDidLoad 中具有弱 self 是可以的