Ios viewDidLoad与ViewDidDisplay-名称标签问题
关于用户名标签的显示和更新,我遇到了这个问题 用户id 1-“Felicia” 用户id 2-“Sam” (第一屏:默认用户为“Felicia”) (第二屏:将用户更改为“Sam”时) (第三个屏幕:点击另一个屏幕后,用户名的标签自动恢复为“Felicia”,当它应该是“Sam”时) 我的理想输出是,除非用户发生更改,否则用户名标签将保持为所选用户,并且在名称更新时能够在侧菜单栏上反映名称标签 在我的代码中,我尝试在ViewDidDisplay和viewDidLoad中添加我的方法(getUserInfo()和setUserNameLabel()),但是这两种方案都没有生成我想要的输出 视图显示 优点: -名称标签将反映所选用户名的更新(用户可以更改其名称) 缺点: -选择其他视图时,名称标签将恢复为侧菜单栏上用户id 1的名称 viewDidLoad 优点: -选择其他视图时,名称标签不会恢复为侧菜单栏上用户id 1的名称 缺点Ios viewDidLoad与ViewDidDisplay-名称标签问题,ios,swift3,viewdidload,viewdidappear,Ios,Swift3,Viewdidload,Viewdidappear,关于用户名标签的显示和更新,我遇到了这个问题 用户id 1-“Felicia” 用户id 2-“Sam” (第一屏:默认用户为“Felicia”) (第二屏:将用户更改为“Sam”时) (第三个屏幕:点击另一个屏幕后,用户名的标签自动恢复为“Felicia”,当它应该是“Sam”时) 我的理想输出是,除非用户发生更改,否则用户名标签将保持为所选用户,并且在名称更新时能够在侧菜单栏上反映名称标签 在我的代码中,我尝试在ViewDidDisplay和viewDidLoad中添加我的方法(get
-名称标签不会反映所选用户名的更新情况。解决方法:如何处理
视图将出现或视图将布局子视图
我认为视图将出现
或视图将布局子视图
(如果您使用自动布局)是您所需要的。
当您从Felicia
切换到Sam
时,必须将该状态保存到某个位置,以便在重新打开侧菜单时参考
伪代码:
var selected = Felicia
if `Felicia` clicked:
selected = Felicia
if `Sam` clicked:
selected = Sam
(save selected to somewhere like NSUserDefault)
在您的侧边菜单中,将出现视图
:使用所选用户更改用户界面
加载所选内容(从NSUserDefault之类的位置)
查看UIViewController生命周期:
您需要为侧菜单viewcontroller中的触发器名称更改事件创建委托或使用NSNotificationCenter
因为当您创建侧菜单时,在这个类中viewDidLoad或任何其他方法在生命周期中调用一次
通过NSNotificationCenter执行此操作的示例
我尝试过ViewWillDisplay,它的工作原理与ViewDidDisplay相同。。viewWillLayoutsubviews也不起作用:(@Meebfel啊,我的意思是你应该根据所选用户的值更新你的视图。我设法将所选用户名保存到一个变量中。但是ui无法更新。我想这是因为方法:setUserNameLabel()和getUserInfo()。我已经将这两个方法放入了ViewDidDisplay中。如果我希望在应用程序启动时只加载一次,您知道我还能将这两个方法放在哪里吗?您有任何示例吗?我有通过NSNotification进行的示例。因此我将在回答中进行更新。如何使用NSNotificationCenter触发名称更改事件?您可以通过发送(Post)进行触发通知:在上面的文章中。当您创建或生成事件时,您需要使用这行代码作为触发器。我建议不要使用通知。只对多个广播使用通知。
if selected == `Felicia`
do UI update at main thread
if selected == `Sam`
do UI update at main thread