我有一个基于教程构建的iphone应用程序(针对不同的框架,所以我不得不修改一些东西)在同一个View上使用TabBar和NavigationBar,它还包含一个从SQLite数据库填充的UITable 。 我昨晚制作了它,当你在UITable中选择一个项目时,它被重定向到一个显示我的项目细节的视图(此时,只是一个城市名称)。我进去试图修改那个DetailView ......我没有改变任何工作。 所以我有几个问题/问题: 1)为什么我的CityDetailView.xib在Interface Builder中看起来像这样:
alt text http://www.jamespwright.com/images/public/detailviewinterfacebuilder.jpg
但是在运行应用程序时看起来像这样:
alt text http://www.jamespwright.com/images/public/wrongdetailview.jpg
我是iPhone开发新手,所以我甚至不确定从哪里开始寻找这个问题。 我知道TableViewController设置为CitiesTableViewController,并在我的didSelectRowAtIndexPath中的控制器代码中运行此代码:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
City *city = (City *)[appDelegate.cities objectAtIndex:indexPath.row];
// Initialize a new CityDetailView if there isn't one already
if (self.cityView == nil) {
CityDetailViewController *viewController = [[CityDetailViewController alloc] initWithNibName:@"CityDetailViewController" bundle:[NSBundle mainBundle]];
self.cityView = viewController;
[viewController release];
}
[appDelegate.citiesNavController pushViewController:cityView animated:YES];
self.cityView.city = city;
self.cityView.title = city.name;
[self.cityView.cityName setText:city.name];
[self.cityView.stateName setText:city.state];
[self.cityView.population setText:city.population];
我在Interface Builder中将标签链接到Controller中的属性。 我还将CityDetailView.xib类标识设置为CityDetailViewController,它具有正确声明的所有属性。 有一点我无法弄清楚,如果我将CityDetailView.xib重命名为“CityDetailView.xib1”,程序仍然运行相同,但如果我改变[self.cityView.title = city.name]; to [self.cityView.title = @“Bob's Your Uncle!”];它显示程序中的变化。
在一个完全不相关的注释中,在我的TableView(我的第二个标签)上,我在底部有这个奇怪的栏,我不知道它是什么或如何摆脱它,我很确定它必须使用NavigationController,但我不知道为什么或如何在那里。就是这个:
alt text http://www.jamespwright.com/images/public/tabandnavigationview.jpg
有人能就这些问题向我提出任何建议吗?
答案 0 :(得分:1)
当您更改源文件时“没有任何反应”时,您通常只会做一些事情:
清洁绝对是首先要尝试的。特别是如果你可以重命名XIB并且仍然可以愉快地继续下去。
答案 1 :(得分:0)
最简单的解释是self.cityView.stateName
和后续标签未在界面构建器中连接。控制器必须有一个连接到每个标签的插座,以便填充它。如果您向无法找到的对象发送消息,则Objective-C不会引发错误。