Iphone 从tableview控制器推送视图控制器无效

Iphone 从tableview控制器推送视图控制器无效,iphone,objective-c,xcode,uiviewcontroller,uinavigationcontroller,Iphone,Objective C,Xcode,Uiviewcontroller,Uinavigationcontroller,我已经设置了一个表视图控制器并连接了一个子视图,因此当我单击行时,新的子视图就会出现。我一步一步地学习了一些教程,但是由于某种原因,当我单击行时,什么也没有出现(尽管行被选中) 这是我的主视图控制器: @interface TableViewsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { IBOutlet UITableView *tblSimpleTable; IB

我已经设置了一个表视图控制器并连接了一个子视图,因此当我单击行时,新的子视图就会出现。我一步一步地学习了一些教程,但是由于某种原因,当我单击行时,什么也没有出现(尽管行被选中)

这是我的主视图控制器:

@interface TableViewsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

IBOutlet UITableView *tblSimpleTable;
IBOutlet UINavigationBar *navBar;
NSArray *arryData;
NSMutableArray *listOfItems;
}

@property (nonatomic, retain) IBOutlet UITableView *tblSimpleTable;
@property (nonatomic, retain) IBOutlet UINavigationBar *navBar;
@property (nonatomic, retain) NSArray *arryData;
@property (nonatomic, retain) NSMutableArray *listOfItems;
和子视图控制器:

h

m

我非常确定IB中的所有内容都连接良好


谢谢你的帮助

是导航控制器内的表视图。您可以在上设置断点

[self.navigationController pushViewController:dvController animated:YES];

并在self.navigationController属性获取战利品。如果它是nil,您将无法将任何内容推送到它上,但它不会给您一个错误,因为向nil发送消息在大多数情况下只会返回nil。

可能是一个小的过度查看。如果从模板创建了DetailedViewController,并选中为其创建nib文件,则nib文件应与.h和.m文件同名。因此,请检查nib类的名称。可能应该是:

DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
注意:在此处使用
self.

self.dvController = nil;

否则会泄漏。

在选择行之前,导航栏是否显示在tableView的上方?代码看起来是正确的,所以我会仔细检查连接,确保导航控制器设置正确。记录
dvController
,看看它是否为
nil
。有趣的是,initWithNibName实际上被设置为另一个名称(就像我说的,我从教程中复制了这个,但更改了文件名),但一旦我修复了它,它仍然不起作用。也重新泄漏-我们还需要ARC吗?是的,它是零…我意识到我根本没有定义它…奇怪。我从一本教程中逐字逐句地读了一遍。很多时候,最让你烦恼的是那些小事我看到在很多地方,他们在AppDelegate中做了一些这样的定义——可以吗?当我还是一个初学者的时候,我尽量不要碰这个物体……谢谢!你的应用程序委托是一个可以放置它的地方。但更好的解决方案是共享静态对象。因此,您创建了一个具有静态方法
+(MyHolder*)sharedHolder的类[self.navigationController pushViewController:dvController animated:YES];
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.dvController = nil;