2012-06-06 3 views
0

Я новичок в Objective-C, и я пытаюсь запрограммировать приложение для iPhone.Почему мой код Objective-C выбрасывает исключение?

Это мой код:

Глава файла:

#import <UIKit/UIKit.h> 

@interface TutorialViewController : UIViewController{ 
    UILabel *labelText; 
    UIImageView *imageView; 
} 
@property(nonatomic,retain) IBOutlet UILabel *labelText; 
@property(nonatomic,retain) IBOutlet UIImageView *imageView; 

-(IBAction) click:(id) sender; 

@end 

и это реализация:

#import "TutorialViewController.h" 

@implementation TutorialViewController 
@synthesize labelText; 
@synthesize imageView; 

-(void) click:(id)sender { 
    imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1.png"]]; 
    NSString *titleOfButton = [sender titleForState:UIControlStateNormal]; 
    NSString *newText = [[NSString alloc]initWithFormat:@"%@",titleOfButton]; 
    // Change Image When Clicking Color Button 
    if([titleOfButton isEqualToString:@"Blue"]){ 
     NSLog(@"Blue"); 
     UIImage *image = [UIImage imageNamed:@"1.png"]; 
     imageView.image = image; 
     [image release]; 
    }else{ 
     UIImage *image = [UIImage imageNamed:@"2.png"]; 
     imageView.image = image; 
     [image release]; 
     NSLog(@"Else"); 
    } 
    labelText.text = newText; 
    [newText release]; 
} 
- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 
#pragma mark - View lifecycle 
- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    self.labelText = nil; 
} 
-(void) dealloc{ 
    [labelText release]; 
    [imageView release]; 
    [super dealloc]; 
} 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

Когда я запустить приложение, он генерирует исключение:

'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "TutorialViewController" nib but the view outlet was not set.' 

Может ли любой Помогите мне с моим кодом?

И, кроме того, не могли бы вы рассказать мне о тех плохих письменных поведении в моем коде.

Большое спасибо!

+0

откуда вы выделяете память TutorialViewController и загружаете, можете ли вы добавить этот код? – rishi

+0

Не связано с вашей проблемой, но у вас проблемы с управлением памятью. Вы выпускаете вещи, которые вы не выделяли, не копировали и не сохраняли. – Chuck

ответ

3

Подключите корень UIView внутри вашего Xib к виду владельца файла.

enter image description here

+0

Спасибо, Джеки, он работает. Но перед этим я уже подключил UIImageView к FileOwner, но он не работает. Каково отношение между ними? – MrROY

+0

Вы подключили 'UIImageView' к владельцу файла, но где? К IBOutlet, который вы создали? В корневом представлении? – Peres

+0

К IBOutlet я создал. – MrROY

0

Ну, сообщение об ошибке выглядит довольно ясно:

зарядил «TutorialViewController» перо, но выход вида не набора.

Проверьте розетки на вашем TutorialViewController nib. Похоже, что выходная точка зрения не связана ни с чем. Чтобы исправить это, подключите верхний уровень к розетке (перетаскивание).

1

Откройте файл .xib, то в объектах нажмите на View, а затем нажмите на Connections Inspector и оттуда Control + Нажмите на круг в Реферирование Outlets и перетащить его в файл владелицей и от во всплывающем меню выберите вид .... :)

Connecting Outlets

EDIT: 

Ваш взгляд является Главное UIView, что вы будете вкладывать в него или под ним в иерархии будет отображаться автоматически. Поскольку вы использовали UIImageView в нем (вы можете видеть иерархию представлений и объектов в объектах, столбец слева от xib под PlaceHolders). Когда вы подключаете UIView (родительский вид) к владельцу файла. Он показывает все другие виды, которые включены в основной вид. Поэтому, когда вы связали основной вид с владельцем файла, он решил вашу проблему.

+0

Я уже сделал это, но это не сработает. – MrROY

+0

правильно ли он подключен? –

+0

Ну, я подключил imageView (смотри мой код) к FileOwner ... не к корневому представлению. – MrROY

Смежные вопросы