gpt4 book ai didi

ios - 仅在 iOS 7 上向 UITableView 添加 subview 时出现 "Auto Layout still required"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:51 25 4
gpt4 key购买 nike

我有一个加载 UITableViewController 的容器。一开始表中没有数据,所以我显示一个空 View 。这就是我在 ViewDidLoad 中的做法:

emptyView = new UIView ();
emptyView.BackgroundColor = UIColor.Gray;
// works on iOS 8 but has to be removed on iOS 7
emptyView.TranslatesAutoresizingMaskIntoConstraints = false;

var views = NSDictionary.FromObjectsAndKeys(
new object[] { emptyView },
new object[] { "emptyView" }
);

View.AddSubview (emptyView);
this.TableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;

View.AddConstraints(NSLayoutConstraint.FromVisualFormat ("V:|-0-[emptyView]-0-|", NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));
View.AddConstraints(NSLayoutConstraint.FromVisualFormat ("H:|-0-[emptyView]-0-|", NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

现在的问题是我禁用自动调整掩码的那一行。在 iOS 7.1 上(在设备和模拟器上)我收到以下错误:

NSInternalInconsistencyException Reason: Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.

如果我注释掉 TranslatesAutoresizingMaskIntoConstraints 一切正常。相同的代码无需修改即可在 iOS 8 上运行。我只删除了 View 上的自动调整大小掩码,而不是整个 UITableView。将 View 添加到表头会导致同样的问题。

我应该如何解决自动布局的问题?尽管代码在 C# 中,但您始终可以提供来自 Objective C 世界的解决方案,因为概念是相同的。

最佳答案

我不再使用自动布局,我的 emptyView 不再使用它。

emptyView = new UIView (new RectangleF(0, 0, this.View.Bounds.Size.Width, this.View.Bounds.Size.Height));
emptyView.BackgroundColor = UIColor.White;
emptyView.AutoresizingMask = UIViewAutoresizing.All;

现在可以了,但不知道是不是为了不使用自动布局。也许有人可以提供更好的答案,我可以将其标记为已接受。

关于ios - 仅在 iOS 7 上向 UITableView 添加 subview 时出现 "Auto Layout still required"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26460934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com