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】:

您是否使用自动布局?正如其他人所说,请在您的viewDidLoadviewWillAppear 中发布代码。您是通过编程方式放置按钮还是仅使用界面生成器?即使将它们正确放置在 IB 中,我也遇到了无法在设备上正确加载的问题。我刚刚删除它并重新添加,一切都很好。请回复更多详细信息,我将编辑我的答案。

【讨论】:

以上是关于ios - 返回隐藏/显示元素的屏幕时,按钮未正确放置的主要内容,如果未能解决你的问题,请参考以下文章

当我将屏幕大小调整为移动设备时,我的网站移动视图在桌面上正确显示隐藏元素,但在我的手机上它们没有隐藏

在 iOS 8 上隐藏后退按钮

工具栏未正确显示 SwiftUI

iOS 上的 Safari 仅在滚动停止后显示固定元素

iOS - 工具栏未显示

如何在 iOS 中创建在每部 iPhone 中正确显示的按钮列表