【问题标题】:UIAlertController in wrong positionUIAlertController 在错误的位置
【发布时间】:2018-09-08 17:58:21
【问题描述】:

我遇到了警报显示在屏幕左上角(并被切断)的情况,如中所述 UIAlertController is moved to buggy position at top of screen when it calls `presentViewController:`

我的代码是从 Apple 的文档中复制和粘贴的:

- (void) alertHere
{

    UIAlertController* alert = [UIAlertController 
alertControllerWithTitle:@"My Alert"
                message:@"This is an alert."

   preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];

    [self presentViewController:alert animated:YES 
    completion:nil];
}

我从 UIViewController 调用它。

我根本不理解上面提到的 stackoverflow 讨论,也不理解答案。我需要一个来自草原的可怜的简单程序员可以理解的东西。 Apple 不认为这是一个错误(显然),但我不明白为什么,我当然不明白如何修复它。

感谢您提供了一个不错的简单解决方案,或者至少是对我做错了什么的简单描述。

【问题讨论】:

  • 您链接的问题是关于从警报控制器呈现另一个视图控制器。你也在做同样的事情吗?
  • 坦率地说,我不确定。我从我的主视图控制器调用它。这是我知识的极限!从文档中我不清楚 UIAlertController 是一个视图控制器(尽管我想这是有道理的)。但如果是,我应该从哪里调用它?谢谢。
  • 是的,UIAlertController 是一个视图控制器。警报应该从另一个视图控制器呈现,就像任何其他视图控制器一样。您链接的另一个问题中的问题是有人提出警报控制器,然后从警报控制器中提出另一个视图控制器。您似乎没有这样做,因此您链接的其他问题与您的问题无关。
  • 谢谢 rmaddy,但我做错了什么?因为据我所知,我正在从另一个视图控制器呈现 uialertcontroller。
  • 您发布的代码没有明显问题。

标签: ios objective-c cocoa-touch uialertcontroller


【解决方案1】:

根据这篇文章

Attempt to present UIViewController on UIViewController whose view is not in the window hierarchy

看来你是从viewDidLoad 打电话给alertHere 所以要解决你的问题,你必须在ViewDidAppear 打电话。

【讨论】:

  • 抱歉,试过了,没用。行为一样。没有报错,只是出现在错误的位置。不过还是谢谢。
  • 这里就不多分享了,这里是主viewController中的viewDidAppear。我已经消除了这个测试的所有其他内容。 - (void) viewDidAppear: (BOOL) inAnimated { [super viewDidAppear: inAnimated]; [自我提醒这里]; }
【解决方案2】:

答案就在这里:How to present UIAlertController when not in a view controller?

我花了一段时间才理解它,但一旦实施,它就可以工作。

【讨论】:

    猜你喜欢
    • 2015-01-17
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多