在UINavigationController上调用pushViewController什么也不做(没有崩溃)

时间:2010-07-10 18:41:05

标签: iphone objective-c uinavigationcontroller

我有一个UINavigationController作为标签栏控件中的一个视图。它看起来很好,我有一个UIBarButtonItem应该加载一个子视图。我把按钮连接到调用pushViewController的IBAction,但是当我这样做时,没有发生。它不会崩溃或任何事情......它只是没有做任何事情。我试过:使用不同的视图控制器作为子视图(没有运气)。有人有什么建议吗?这是我的代码:

标题文件:

#import <UIKit/UIKit.h>
#import "FSSettings.h"
#import "MeasureSelector.h"
#import "Dashboard.h"

@interface DashboardNavigationController : UIViewController {
 IBOutlet UINavigationController  *navController;
 IBOutlet UINavigationBar   *navBar;
 IBOutlet UIBarButtonItem   *measureButton;
}

@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain) IBOutlet UINavigationBar   *navBar;
@property (nonatomic, retain) IBOutlet UIBarButtonItem   *measureButton;

- (IBAction) showMeasureScreen:(id)sender;

@end

包含操作的.m文件:

// Displays the measure screen
- (IBAction) showMeasureScreen:(id)sender
{
 NSLog(@"Loaded measure screen");
 MeasureSelector *msel = [[MeasureSelector alloc] initWithNibName:@"MeasureSelector" bundle:nil];

 [[self navigationController] pushViewController:msel animated:YES];
 NSLog(@"Done.");
}

当我点击按钮时没有任何反应(但我确实看到了日志消息)。然而,我可以一遍又一遍地做到这一点,没有任何不良影响。

1 个答案:

答案 0 :(得分:2)

UIViewController的navigationController属性是指UIViewController属于层次结构的nav控制器。如果我正确理解了场景,DashboardNavigationController将管理作为UINavigationController容器的视图,因此这个属性为零是有道理的。

使用您创建的插座从导航控制器的层次结构外部访问导航控制器。