Соединения построителя интерфейса вызывают сбой в приложении панели вкладок - PullRequest
0 голосов
/ 07 августа 2011

для упражнения. Я пытаюсь разработать простое приложение для iPhone на основе панели вкладок с нуля, но у меня возникли некоторые проблемы .. Я выполнил следующие действия: http://www.techotopia.com/index.php/Creating_an_iPhone_Multiview_Application_using_the_Tab_Bar

Приложение корректно загружает три представления, пока в них нет соединения; если я подключаю любые выходы или действия к метке или кнопке подпредставлений, приложение вылетает.

Например, мой firstView.h содержит:

#import <UIKit/UIKit.h>


@interface firstView : UIViewController {
IBOutlet UILabel *resultLabel;
}

-(IBAction)randomizeAction;

@property (nonatomic , retain) IBOutlet UILabel *resultLabel;


@end

и firstView.m

-(IBAction)randomizeAction:(id)sender
{
//NSInteger rand = arc4random() % 75;
//resultLabel.text = [ [NSString alloc] initWithFormat:@"Random integer: @%",rand];
UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Yeah!" message:@"Yeah" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil ];
[alert show];
[alert release];

}

Если я подключу метку к resultOutlet или кнопку к методу randomizeAction, произойдет сбой приложения при переключении на связанные представления. Где ошибка?

Ответы [ 3 ]

1 голос
/ 07 августа 2011

в файле .h вы объявляете свойство дважды IBOutlet.Поскольку я не думаю, что это вызывает проблему, но это просто не нужно.Также вы объявили randomizeAction в файле .h без параметра и реализовали его с параметром.

Ваш код должен выглядеть следующим образом:

#import <UIKit/UIKit.h>

@interface firstView : UIViewController {
   UILabel *resultLabel;
}
@property (nonatomic , retain) IBOutlet UILabel *resultLabel;

-(IBAction)randomizeAction:(id)sender;

@end

и firstView.m

-(IBAction)randomizeAction:(id)sender
{
   //do stuff
}
0 голосов
/ 07 августа 2011

Из этого сообщения об ошибке похоже, что ваш контроллер представления не подключен должным образом в Интерфейсном Разработчике.Вы уверены, что ваш контроллер представления (Владелец файла в IB) идентифицирован как экземпляр firstView?Проверьте, к какому классу это относится в Identity Inspector в XCode.

Также было бы полезно, если бы вы могли показать код, в котором ваш контроллер представления объявлен и создан (скорее всего, в делегате приложения).

0 голосов
/ 07 августа 2011

Я не уверен, но я думаю, что вы должны изменить это:

@interface DetailViewController : UIViewController

Кому:

@interface firstView : UIViewController
...