0

私はObjective-Cが初めてで、iPhoneアプリをプログラムしようとしています。

これは私のコードです:

ヘッドファイル:

#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.'

誰でも私のコードで私を助けることができますか?

さらに、私のコードに書かれている悪い動作について教えてください。

大変感謝します !

4

3 に答える 3

3

UIViewXib内のルートをファイルの所有者のビューに接続します。

ここに画像の説明を入力してください

于 2012-06-06T06:27:58.143 に答える
1

.xib ファイルを開き、[オブジェクト] で [表示] をクリックしてから、[接続インスペクター] をクリックし、そこから [参照アウトレット] の円を Control + クリックして [ファイルの所有者] にドラッグし、ポップアップ メニューから [表示] を選択します ... . :)

コンセントの接続

EDIT:

あなたのビューはメインの UIVIEW であり、階層内またはその下に配置するものはすべて自動的に表示されます。その中でUIImageViewを使用したように(オブジェクトのビューとオブジェクトの階層を確認できます。左の列はPlaceHoldersの下のxibにあります)。UIView(親ビュー)をファイルの所有者に接続するとき。メイン ビューに含まれる他のすべてのビューが表示されます。メインビューをファイルの所有者に接続すると、問題が解決しました。

于 2012-06-06T06:31:48.077 に答える
0

さて、エラーメッセージはかなり明確に見えます:

「TutorialViewController」ペン先をロードしましたが、ビューアウトレットが設定されていませんでした。

TutorialViewControllerペン先のアウトレットを確認してください。ビューアウトレットは何にも接続されていないようです。これを修正するには、トップレベルビューをアウトレットに接続します(コントロールドラッグ)。

于 2012-06-06T06:27:50.893 に答える