【发布时间】:2014-06-28 12:25:14
【问题描述】:
我有一个 UIView 子类 (PopupView) 和两个 xbis:PopupView.xib 和 PopupView~iphone5.xib。
当我调用 xib 时:
if ( screenHeight >= 568 ) {
subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopupView~iphone5" owner:self options:nil];
} else {
subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopupView" owner:self options:nil];
}
在 iOS 7 中,使用 3.5 英寸手机进行测试时,它会加载正确的 PopupView.xib,而在 4 英寸手机上,它会加载 PopupView~iphone5.xib。 但是在使用 iOS 6 和 3.5 英寸手机进行测试时,虽然代码从“else”语句传递并且理论上它加载了 PopupView.xib ,但它实际上返回了 iphone 5 xib (显示的视图是为 iphone5 设计的)和加载视图的高度是 548,而不是 480。
有什么建议吗?
【问题讨论】:
-
568 >= 548 返回与 568 >= 568 相同的值。
-
与其猜测和理论推测遵循哪个执行路径,您可以使用日志语句或断点吗?另外,我只能猜测您计算
screenHeight的方式可能不适用于 iOS 6,因此请包含该代码。 -
@Ramdy 你是对的,这是我的错字,但 568(iphone 5 屏幕高度)对于 548 和 568 值都是 >=。所以这并不能解决问题。
-
@nhgrif 我不是在猜测。我已经用调试器检查了它,是的,代码加载了 else 语句中的部分。这部分叫做:subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopupView" owner:self options:nil];但仍会加载 iphone5 xib
-
你如何确定它正在加载不正确的 xib?
标签: ios iphone loadnibnamed