【问题标题】:ios - when going back to a screen that hides/shows elements, button is not placed rightios - 返回隐藏/显示元素的屏幕时,按钮未正确放置
【发布时间】: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
  • 您使用的是笔尖还是情节提要?如果是,是否开启了自动布局?

标签: ios objective-c uibutton interface-builder


【解决方案1】:

在里面写代码

-(void)viewWillAppear
{
}

检查是否处于编辑模式并相应更改 UI。

【讨论】:

  • 什么是 viewWillAppear?对不起,我不熟悉。
  • 视图进入前台时调用的方法。就像第一次加载视图时调用 viewDidLoad 一样。
  • 我不确定那会做什么。我已经知道它会出现错误:) 问题是我不知道如何相应地更改 ui :)
【解决方案2】:

您能否发布您的代码,以便我可以告诉您确切的问题?

您很可能已经编写了用于更改用户界面的代码

- (void)viewWillAppear()
{

}

方法。你需要剪切粘贴进去

- (void)viewDidLoad()
{

}

方法。

您似乎是新手。如果您不知道这些方法在哪里,请在此代码的视图控制器中按ctrl+F 搜索并搜索这些方法名称。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2011-06-30
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多