【问题标题】:How to enable the UIButton?如何启用 UIButton?
【发布时间】:2016-04-09 03:18:45
【问题描述】:

故事板中有两个viewcontrollers。第一个视图是LaunchScreen,它首先出现。使用UILongPressGestureRecognizer 将显示第二个视图。

第一次显示第二个视图时,我的第二个视图代码正在检查一个标志是否存在文件。第二个视图有一个UIButton,如果文件不存在则禁用。如果我用

关闭第二个视图
 [self dismissViewControllerAnimated:YES completion:nil];

第二个视图消失了,我看到了我的第一个视图。效果很好。

但是如果我重复它并出现第二个视图,viewcontroller 不会检查我更改的标志,因为该文件现在存在。

以下方法

-(void)showConfigView {
    [self presentViewController:[self config] animated:YES completion:nil];
}

正在调用第二个视图。

我的问题是:为什么我的UIButton 仍然被禁用,尽管标志有另一个值并且文件存在?

【问题讨论】:

  • 您在哪里(以您的第二个视图的哪种方法)检查​​此标志?
  • 可能是你检查标志的方式不对,你需要在出现之前做一些事情,比如:secondViewController.flag = self.flag,使用委托、通知或在你的 secondViewController 中有一个 firstViewController 的实例获取标志值。看起来您正在检查 -viewDidLoad 方法中的标志值?尝试更改为 -viewDidAppear。
  • @sticker/@rokjarc2:我检查了 -viewDidLoad 中的标志。
  • - viewDidLoad 只运行一次,将代码移动到 viewWillAppear 或 -viewDidAppear

标签: ios objective-c iphone cocoa-touch uibutton


【解决方案1】:

在 viewDidLoad 和 viewWillAppear 中更改标志

【讨论】:

    【解决方案2】:

    您需要做的是在每次视图控制器关闭显示时检查标志。您可以在调用presentViewControllerdismissViewControllerAnimated 之前在showConfigView 中执行此操作(如果您正在使用它)。

    但最佳做法是检查viewWillAppearviewDidLoad 中的条件。

    启用您编写的按钮

      .userInteractionEnabled = true;  
    

    【讨论】:

    • 谢谢,Objective-C 对我来说是新的。我现在检查 -viewWillAppear 中的条件。
    • 它帮助我理解它是如何工作的,而且它也有效。我想了解它是如何工作的。我不认为Objective-C 这么难。 C 和 C++ 更容易学习:D
    • @Premox 你可以试试 Swift 进行 iOS 开发,对于初学者来说更容易。
    • @Premox 你能接受我的答案而不是选择的答案吗?很明显,从选票来看,我的能力更强
    【解决方案3】:
      .userInteractionEnabled = true;     
      [self dismissViewControllerAnimated:YES completion:nil];
    

    请尝试一下。此代码在您关闭或关闭第二个视图时写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多