ios - 返回隐藏/显示元素的屏幕时,按钮未正确放置
Posted
技术标签:
【中文标题】ios - 返回隐藏/显示元素的屏幕时,按钮未正确放置【英文标题】:ios - when going back to a screen that hides/shows elements, button is not placed right 【发布时间】:2013-06-05 12:39:07 【问题描述】:我有一个带开关的屏幕。如果选择是,则显示一些元素,如果选择否,则隐藏表单上的元素,并向上移动提交按钮,这样一些元素曾经存在的地方就没有空白了。
下面是代码:
- (IBAction)privacy:(id)sender
[self.view endEditing:YES];
if (self.privacySwitch.on)
nameField.hidden = NO;
emailField.hidden = NO;
nameLabel.hidden = NO;
emailLabel.hidden = NO;
CGPoint pt = buttonProperty.center;
pt.y += 135;
buttonProperty.center = pt;
else
nameField.hidden = YES;
emailField.hidden = YES;
nameLabel.hidden = YES;
emailLabel.hidden = YES;
CGPoint pt = buttonProperty.center;
pt.y -= 135;
buttonProperty.center = pt;
一切正常。我遇到的问题是,如果用户输入表单,进入下一个屏幕,然后按下后退按钮,所有元素都像以前一样出现,但是尽管其他元素仍然隐藏,但按钮仍然是原来的位置它看起来很奇怪。 这是截图:
有人知道如何解决这个问题吗? 谢谢!
【问题讨论】:
如果您在 Viewdidload 中编写了任何代码,请复制并粘贴到 ViewwillAppear 您使用的是笔尖还是情节提要?如果是,是否开启了自动布局? 【参考方案1】:在里面写代码
-(void)viewWillAppear
检查是否处于编辑模式并相应更改 UI。
【讨论】:
什么是 viewWillAppear?对不起,我不熟悉。 视图进入前台时调用的方法。就像第一次加载视图时调用 viewDidLoad 一样。 我不确定那会做什么。我已经知道它会出现错误:) 问题是我不知道如何相应地更改 ui :)【参考方案2】:您能否发布您的代码,以便我可以告诉您确切的问题?您很可能已经编写了用于更改用户界面的代码
- (void)viewWillAppear()
方法。你需要剪切粘贴进去
- (void)viewDidLoad()
方法。
您似乎是新手。如果您不知道这些方法在哪里,请在此代码的视图控制器中按ctrl+F
搜索并搜索这些方法名称。
【讨论】:
【参考方案3】:您是否使用自动布局?正如其他人所说,请在您的viewDidLoad
和viewWillAppear
中发布代码。您是通过编程方式放置按钮还是仅使用界面生成器?即使将它们正确放置在 IB 中,我也遇到了无法在设备上正确加载的问题。我刚刚删除它并重新添加,一切都很好。请回复更多详细信息,我将编辑我的答案。
【讨论】:
以上是关于ios - 返回隐藏/显示元素的屏幕时,按钮未正确放置的主要内容,如果未能解决你的问题,请参考以下文章