【问题标题】:iOS error: Assertion failureiOS 错误:断言失败
【发布时间】:2014-06-13 12:18:35
【问题描述】:

调用presentViewController时出错

它的行为好像与约束有关,但即使我删除所有约束,它仍然会发生。

导致崩溃的代码行是:[[self sourceViewController] presentViewController:[self destinationViewController] animated:NO completion:nil];

只有当设备是横向时,错误才会爆发,但是在纵向调用这条线时,一切正常。

我得到的错误是:

*** Assertion failure in -[UIView _edgeExpressionInContainer:vertical:max:], /SourceCache/UIKit/UIKit-2935.137/NSLayoutConstraint_UIKitAdditions.m:2815

请记住,这是 segue 类的最后一行。

编辑:到目前为止,似乎错误可能在这一行:self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 在源视图控制器中。 但是,出于设计目的,这条线对于汇总视图至关重要。与此相关的整个代码块在这里:

[refreshNotes setAutoresizingMask:(UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin)];
    [[refreshNotes.subviews objectAtIndex:0] setFrame:CGRectMake(refreshNotes.bounds.origin.x, 17, refreshNotes.bounds.size.width, refreshNotes.bounds.size.height)];
    [[refreshNotes.subviews objectAtIndex:0] setTintColor:[UIColor colorWithRed:95.0/255.0 green:49.0/255.0 blue:187.0/255.0 alpha:1]]; // lighter purple so it doesn't appear black

    [self.view setTranslatesAutoresizingMaskIntoConstraints:NO];

【问题讨论】:

  • 通常断言失败伴随着描述原因的附加文本。在这种情况下是否有任何此类附加文字?
  • 如果您查看@kuchumovn 答案here,这是与您的问题相同的解决方案,作为对稍微不同的问题的答案,他说拥有 [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 在他的目标 VC 中搞砸了 segue。
  • Hot Licks:不。这是我唯一得到的(除了lldb) rdurand:我的源视图控制器中有这条线,但是对于某些设计来说这是必需的。我将在答案编辑中发布整个代码块。

标签: ios objective-c segue transitions presentviewcontroller


【解决方案1】:

rdurand 概述了导致此错误的代码行。这是[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];

我真的不知道到底发生了什么,但我将 bool 参数从 NO 更改为 YES。应用不再崩溃。

非常感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 2012-11-28
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2014-10-03
    相关资源
    最近更新 更多