0

我正在开发一个基于导航的应用程序。我的 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];
4

1 回答 1

0

你做错了什么(除了你原来的问题)。为什么要实例化每个视图控制器,然后仅使用基于当前“单元格选择”的视图控制器?这将减慢您的应用程序的速度,具体取决于加载这些单独视图中的每一个所需的时间。您应该只在“if (indexPath.row == 2) {”块实例化相关的视图控制器。

除此之外,您的方法还有很多问题。您正在做的事情永远不会起作用,因为实例化通用 UITableViewController(即使您提供自己的 nib)显然只会向您显示一个空视图。您需要有一个自己的类,将 nib 作为委托绑定到该类,然后为 TableView 提供数据。

我相信当你创建这些 nib 文件(例如“Pictures”)时,xcode 也会给你一个“PicturesViewController.h 和 PicturesViewController.m”文件?如果是这样,你需要在那里编写适当的代码并确保“Pictures”中的 Tableview " 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];
    }

} 
于 2011-05-01T13:02:09.980 回答