Приложение вылетает в симуляторе iPhone при нажатии кнопки.Xcode 3.2.5 - PullRequest
1 голос
/ 15 июня 2011

Мое приложение - это приложение панели вкладок.Есть две вкладки внизу и выход на первой вкладке с кнопкой, которая ведет в новое окно.Когда я строю код в XCode, это удается.Когда я запускаю приложение в симуляторе и нажимаю кнопку, ведущую к новому окну, приложение вылетает.Это мой код для «FirstViewController» и «GuitarBrandsViewController»

FirstViewController.h-

#import <UIKit/UIKit.h>
#import "GuitarBrandsViewController.h"


@interface FirstViewController : UIViewController {
    FirstViewController *firstViewController;

    IBOutlet UIWindow *window;
    IBOutlet UIWindow *GuitarBrands;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

-(IBAction)gotoGuitarBrands;

@end

FirstViewController.m

#import "FirstViewController.h"


@implementation FirstViewController
@synthesize window;

-(IBAction)gotoGuitarBrands{

    GuitarBrandsViewController *screen = [[GuitarBrandsViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

GuitarBrandsViewController.h

#import <UIKit/UIKit.h>
#import "FirstViewController.h"

@interface GuitarBrandsViewController : UIViewController {
    GuitarBrandsViewController *guitarBrandsViewController;
    IBOutlet UIWindow *window;
    IBOutlet UIWindow *Main;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
-(IBAction)gotoMain;

@end

GuitarBrandsViewController.m

#import "GuitarBrandsViewController.h"

@implementation GuitarBrandsViewController
@synthesize window;

-(IBAction)gotoMain{

    FirstViewController *screen = [[FirstViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

1 Ответ

1 голос
/ 15 июня 2011

Я предполагаю, что вы создаете GuitarBrandsViewController с использованием Interface Builder, поскольку код самого класса не будет работать сам по себе.

Однако, когда вы инициализируете GuitarBrandsViewController, вы не передаете NIB, поэтому вы выделяетеКласс управления без фактической информации NIB от IB.

Вместо

 GuitarBrandsViewController *screen = [[GuitarBrandsViewController alloc] initWithNibName:nil bundle:nil];

Использование

GuitarBrandsViewController *screen = [[GuitarBrandsViewController alloc] initWithNibName:@"GuitarBrandsViewController.xib" bundle:nil];

Настройте имя пера на имя фактического пера, который выиспользовать.

...