关于全局变量的一个怪问题

frequent 2015-04-18 10:46:14
我的这个app有两个界面,一个主界面,一个设置界面。
我在AppDelegate中定义全局变量来保存设置窗口中设置的一些参数。
我在设置窗口的ViewWillDisappear中,将参数保存到全局变量中,然后在主界面的ViewWillAppear中使用全局参数来控制主界面上一些控件是否显示。但神奇的是,我发现返回主界面的时候,参数并没有更新过来。我需要再次进入一下设置界面,然后再返回来主界面,才可以获取到真正的设置的值。也就是要进入两次设置界面才可以获取到设置的值。
另外,主界面和设置界面是tabViewController来布局的,也就是整个app下方有两个tab项,一个“主界面”,一个“设置”。
请问有谁知道引起这个问题的原因吗?
另外我设置界面的ViewWillDisappear中,读取设置的值,然后弹出对话框来显示,发现已经更新好了全局变量里面的值,然后在主界面的ViewWillAppear中,读取全局变量,然后弹出对话框显示出来,却发现是错误的值,并不是我设置的值,还是原来的老值。
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ReyZhang 2015-04-21
  • 打赏
  • 举报
回复
1. 通过你的描述,你首先要确保在设置的参数更新后,有没有被及时更新到全局的存储对象中 2. 参数的设置是否可以用另外一种方式来驱动保存,如通过一个“保存设置”的按钮 3. 另外你的全局是使用的什么方式? 单例,NSUserDefault, 还是归档 4. 如果只是这两个界面,是否可以用“通知”的方式 去更新主界面上的设置。viewwillappear 在主界面每次显示时都会执行,在这里做参数的更新是否每次都有必须执行一次?
Bannings 2015-04-21
  • 打赏
  • 举报
回复
引用 4 楼 frequent 的回复:
[quote=引用 3 楼 zhangao0086 的回复:] 是不是用的static变量。
不是用的static变量。 感觉好像是先执行了主窗口的ViewWillAppear,然后再执行的设置窗口的ViewWillDisappear。但我在这两个函数中都加了弹出对话框的窗口,显示是先执行的ViewWillDisappear,然后再执行的主窗口的ViewWillAppear。很郁闷。[/quote] 后调用 show 的 UIAlertView会最先显示
frequent 2015-04-21
  • 打赏
  • 举报
回复
引用 3 楼 zhangao0086 的回复:
是不是用的static变量。
不是用的static变量。 感觉好像是先执行了主窗口的ViewWillAppear,然后再执行的设置窗口的ViewWillDisappear。但我在这两个函数中都加了弹出对话框的窗口,显示是先执行的ViewWillDisappear,然后再执行的主窗口的ViewWillAppear。很郁闷。
frequent 2015-04-21
  • 打赏
  • 举报
回复
解决了,我把代码移动到ViewDidAppear后,就可以了。
Bannings 2015-04-19
  • 打赏
  • 举报
回复
是不是用的static变量。
不担心 2015-04-19
  • 打赏
  • 举报
回复
你的这种处理方式不是很好 建议将你说的全局变量建成一个类,然后用单例模式创建全局唯一的对象 之后在你的vc里用kvo监听属性的变化,对应的对ui进行调整,这样比较符合mvc设计思想
不担心 2015-04-19
  • 打赏
  • 举报
回复
[self.view setneeddispaly];试试

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧