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的类在该方法中,您将创建类的静态副本,该副本将维护您想要保留的项。然后,您还可以允许“MyHolder”类从您需要的位置初始化项目(如果项目不存在)。并在收到内存警告时处理内存释放。请确保重写使用共享方法创建的静态变量中包含的类的release和autorelease方法。这样它就不会无意中被释放
[self.navigationController pushViewController:dvController animated:YES];
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.dvController = nil;