Создал новый проект и создал новый контроллер вида с кнопкой в представлении.Нажатие на кнопку приводит к exe_bad_action
Я добавляю мнение в применении: didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
BOOL introDisplayed = [[NSUserDefaults standardUserDefaults] boolForKey:kIntroScreenSeenByUser];
if(introDisplayed)
{
}
else
{
IntroView *introView = [[IntroView alloc] initWithNibName:@"IntroView" bundle:nil];
[self.window addSubview:introView.view];
}
[self.window makeKeyAndVisible];
return YES;
}
.h файл
@interface IntroView : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *clickMe;
- (IBAction)clicked:(id)sender;
@end
.m файл
#import "IntroView.h"
@interface IntroView()
@end
@implementation IntroView
@synthesize clickMe;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[self setClickMe:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)clicked:(id)sender {
NSLog(@"clicked");
}
@end
При нажатии на кнопку приводит в EXC_BAD_ACCESS (код = 2. Любые идеи? Я использую ARC.
Благодаря
UPDATE
создал общественную собственность на делегат приложения под названием "introViewController" и изменил применение: didFinishLaunchingWithOptions
@synthesize introViewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
BOOL introDisplayed = [[NSUserDefaults standardUserDefaults] boolForKey:kIntroScreenSeenByUser];
introViewController = [[IntroView alloc] initWithNibName:@"IntroView" bundle:nil];
if(introDisplayed)
{
}
else
{
[self.window addSubview:introViewController.view];
}
[self.window makeKeyAndVisible];
return YES;
}
Это решало ошибку.
Спасибо за ответ. После прочтения вашего ответа я обновил код и разрешил ошибку. Благодарю. Я заблудился в сфере интроспекции и ARC. – iJK
Да, я хочу включить экран, когда приложение загружается (только в первый раз). На экране ввода пользователь может щелкнуть по кнопке, чтобы войти в систему или зарегистрироваться, а после регистрации/регистрации я хочу загрузить контроллер панели вкладок с табличным представлением. Что вы рекомендуете в таком сценарии? Спасибо за подробное описание – iJK
У меня будет мой viewDidLoad моего главного контроллера представления, чтобы определить, нужен ли этот экран ввода/входа, а затем представить этот контроллер вида (либо через модальный, либо нажав его, если вы используете навигационный контроллер). – Rob