Почему я не могу использовать pushViewController с UIButton? - PullRequest
1 голос
/ 02 апреля 2012

Я хочу использовать pushViewController, но не могу.Я помню, что я могу использовать этот код в xcode3.

Вот код в кнопке IBAction

-(IBAction)changtoCal:(id)sender
{
    NSLog(@"get in");
    UINavigationController *cal_nav = [[UINavigationController alloc] initWithNibName:@"calculator" bundle:nil];
    [self.navigationController pushViewController:cal_nav animated:YES];
}

Это не нажатие.Зачем ???Не могли бы вы сказать мне, и как я могу нажать его ???

А вот мой AppDelegate .h

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    UINavigationController *navigationController;
}

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@property (strong, nonatomic) IBOutlet UINavigationController *navigationController;

@end

.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [_window addSubview:[navigationController view]];
    [self.window makeKeyAndVisible];
    return YES;
}

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Вы должны создать экземпляр вашего пользовательского UIViewController в IBAction, а не новый UINavigationController

// change UICalculatorViewController to your view controller
UICalculatorViewController *cal_nav = [[UICalculatorViewController alloc] initWithNibName:@"calculator" bundle:nil];
[self.navigationController pushViewController:cal_nav animated:YES];
1 голос
/ 02 апреля 2012

Я бы предположил, что UIViewController неправильно встроен в UINavigationController.Это будет означать, что self.navigationController = nil.

Я не знаю XIB, но вы можете исправить это, выполнив следующее:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = navc;
    [_window addSubview:navc.view];
    [self.window makeKeyAndVisible];
    return YES;
}
...