如何解决iphone UITableVIew基于导航
| 我正在开发基于导航的应用程序。 我的rootViewController包含3个单元格 -当按下第一个按钮时,将按下UIViewController(此工作) -问题在于应该推送UITableViewController的第二个和第三个单元格 该应用程序正在运行,没有错误,也没有崩溃,但是当我导航到tableview时,将查看其中没有任何元素的空表。 这部分代码有问题吗? :- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIViewController *detailViewController = [[UIViewController alloc] initWithNibName:@\"Introduction\" bundle:nil];
detailViewController.title=@\"Introduction\";
UITableViewController *myPictures = [[UITableViewController alloc] initWithNibName:@\"Pictures\" bundle:nil];
myPictures.title=@\"Pictures\";
UITableViewController *myImages = [[UITableViewController alloc] initWithNibName:@\"ImagesViewController\" bundle:nil];
myImages.title=@\"Images\";
// Pass the selected object to the new view controller.
if (0 == indexPath.row)
[self.navigationController pushViewController:detailViewController animated:YES];
if (1== indexPath.row)
[self.navigationController pushViewController:myPictures animated:YES];
if (2== indexPath.row)
[self.navigationController pushViewController:myImages animated:YES];
[detailViewController release];
[myPictures release];
[myImages release];
解决方法
您正在做的事情非常错误(除了您原来的问题)。为什么要实例化每个视图控制器,然后仅使用基于当前“单元格选择”的视图控制器?根据加载这些单独视图所需的时间,这会降低您的应用程序运行速度。您只应在\“ if(indexPath.row == 2){\”块内实例化相关的视图控制器。
除此之外,您的方法还有很多问题。因为实例化一个通用的UITableViewController(即使您提供自己的笔尖),您正在做的事情也永远不会奏效,显然只会向您显示一个空视图。您需要拥有一个自己的类,笔尖被绑定为一个委托,该委托将为TableView提供数据。
我相信当您创建这些笔尖文件(例如\“ Pictures \”)时,xcode还会为您提供\'PicturesViewController.h和PicturesViewController.m \“文件吗?如果是这样,您需要在其中编写适当的代码并确保Tableview \“ Pictures \” nib文件中的\'datasource \'和\'delegate \'设置为\'PicturesViewController \'。然后,当您要显示该视图时,请执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 1) {
...
} else if (indexPath.row == 2) {
PicturesViewController *myPictures = [[PicturesViewController alloc] initWithNibName:@\"Pictures\" bundle:nil];
[self.navigationController pushViewController:myPictures animated:YES];
[myPictures release];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。