gpt4 book ai didi

iphone - 未使用 initWithNibName 从 NIB 加载 subview

转载 作者:行者123 更新时间:2023-12-03 20:50:16 26 4
gpt4 key购买 nike

我的 RootViewController (这是一个 UITableViewController)中有下面的代码。当单击导航栏中的按钮时执行此代码,然后(在模拟器中)显示下一个 View 。但是,在 TripDetailsController 管理的 View 中绘制的 subview (UITextLabels、UIButtons)不会显示。此外,在屏幕顶部的导航栏中,未显示原始 View 的“后退”按钮,但当我单击导航栏的左侧时,它确实会转换回原始 View 。

  • TripDetailsController.view 链接到 Interface Builder 中的 TripDetailsView (UIView)
  • tdController 确实有一个值,因此看起来好像已加载
  • TripDetailsController 位于单独的 NIB 文件中
  • 使用 iPhone SDK 2.2.1(尚未使用 3.0)

代码:

 TripDetailsController *tdController = [[TripDetailsController alloc]
initWithNibName:@"TripDetailsController" bundle:nil];
[self.navigationController pushViewController:tdController animated:YES];
[tdController release];

在 TripDetailsController 类中,我添加了这样的 viewDidLoad 方法:

代码:

- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"Reis Details";

NSLog(@"Subviews: %@", self.view.subviews);
UILabel *l = [self.view.subviews objectAtIndex:0];
NSLog(@"Subview 0 bounds: %@", l.bounds);
}

下面的日志消息确实显示 subview 存在,但还没有设置边界:

代码:

6/18/09 Jun 18, 2009   10:06:00 PM ReisAdvies[11226] Subviews: (
<UILabel: 0x56f250>,
<UILabel: 0x56f5a0>,
<UILabel: 0x56f6b0>,
<UILabel: 0x56f780>
)
6/18/09 Jun 18, 2009 10:06:00 PM ReisAdvies[11226] Subview 0 bounds: (null)

在 Interface Builder 中,“标签大小”选项卡确实显示 X/Y/W/H 的值。感觉我必须触发它来执行一些布局事件,但在 viewDidLoad() 中调用layoutSubviews 没有帮助。您知道这里可能存在什么问题吗?

最佳答案

在 Interface Builder 中找到了解决方案:

  1. 在 NIB 文件中,我没有包含 UIWindow,因此我向 NIB 文件添加了一个 UIWindow,并将 TripDetailsController.view 导出连接到新添加的 UIWindow。
  2. 文件的所有者 View 属性连接到 TripDetailsView (UIView)
  3. 文件的所有者类设置为 UIViewController

现在它可以按预期工作。

不能 100% 确定这是否是做到这一点的“方法”,但至少它似乎对我来说没问题。

关于iphone - 未使用 initWithNibName 从 NIB 加载 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1011093/

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