我的RootViewController(这是一个UITableViewController)中有以下代码。单击导航栏中的按钮然后(在模拟器中)显示下一个视图时执行此代码。但是,不会显示由TripDetailsController管理的视图中绘制的子视图(UITextLabels,UIButtons)。此外,在屏幕顶部的导航栏中,未显示原始视图的“后退”按钮,但是当我单击导航栏的左侧时,它会转换回原始视图。
代码:
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);
}
下面的日志消息确实显示了子视图,但也没有设置边界:
代码:
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并没有帮助。 任何想法可能是什么问题?
答案 0 :(得分:2)
在Interface Builder中找到解决方案:
现在它按预期工作。
不是100%确定这是否是'方式',但至少它对我来说似乎没问题。
答案 1 :(得分:1)
我在你的代码中注意到的第一件事就是你调用了一个函数:
tdController.loadView;
据我所知,这不能在objective-c中完成。你必须这样称呼它:
[tdController loadView];
此外,您在哪里进行所有初始化?在“loadView”中,在“viewDidLoad”中?
尝试使用类似的方式将控制器添加到屏幕上(推送Views而不是ViewControllers):
[self.view insertSubview:tdController.view atIndex:0];
上面的代码假设它在另一个UIViewController子类中运行,它将控制器的视图作为子视图加载到它自己的视图中。
答案 2 :(得分:1)
另外,在顶部的导航栏中 屏幕,'后退'按钮 原始视图未显示,但是 当我点击左侧的时候 导航栏它确实转换回来 原来的观点。
您是否为navigationItem设置了标题?
例如,在TripDetailsController viewDidLoad
中self.navigationitem.title = @"trip detail";
答案 3 :(得分:0)
导航到子视图的方式对我来说一般都很好。我唯一要提的是你的[TripDetailController -loadView]消息。我从来没有这样做过。 Normall我只是将一些状态信息传递给依赖控制器,然后依赖于标准机制(即viewDidLoad)将其添加到UINavigationController来初始化控制器的逻辑。
您是否收到-viewDidLoad消息?你的控制器在那一刻启动并运行了吗?
在您的项目中某处可能是一个微妙的布线问题/类型。
答案 4 :(得分:0)
这对我有用...
从XIB中删除了Window和ViewControl,并将File的所有者设为ViewCOntroller类,然后将文件所有者视图连接到我的视图。
是否使用initWithNibName加载...
iPhone Dev的新手,以及我可以通过多少方式将自己挂在IB中。