0

ここに画像の説明を入力

TableData は、ビューベースのテーブルのデータソースおよびテーブル デリゲートとしての NSObject のサブクラスです。awakeFromNibビューベースのテーブルを使用しているため、TableDataのメソッドは何度も実行されます。TableData が NSViewController のサブクラスである場合loadView:、タスクを完了するために使用できますが、TableData は NSObject のサブクラスです。私の質問は次のとおりです。

  1. awakeFromNibTableData プロパティを初期化する代わりに、どのメソッドを使用する必要がありますか?
4

2 に答える 2

1

ウィンドウの作成方法はわかりませんが、次の方法で作成できます。

AppDelegate.m

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application

    fMainWinDelegate = nil;
    fMainWinDelegate = [[MainWinDelegate alloc] init];
    [fMainWinDelegate showWindow];
}

MainWindowDelegate.m

- (id)initWithWindow:(NSWindow *)AWindow
{
    NSLog(@"MainWinDelegate::initWithWindow");
    self = [super initWithWindow:AWindow];
    if (self) {
        // Initialization code here.
        NSLog(@"MainWinDelegate::initWithWindow, we have self!");
    }

    return self;
}

- (void)awakeFromNib 
{
    NSLog(@"MainWinDelegate::awakeFromNib");
    // only for debug and to be sure that is called many times
}

- (void)showWindow {
    NSLog(@"MainWinDelegate::showWindow");

    if (!self.window) {
        [NSBundle loadNibNamed:@"MainWin" owner:self];

        NSLog(@"MainWinDelegate::showWindow init part");
        // do your init here
    }

    [self.window makeKeyAndOrderFront:self];

    NSLog(@"MainWinDelegate::showWindow end");
}

これはログです:

MainWinDelegate::initWithWindow
MainWinDelegate::initWithWindow, we have self!
MainWinDelegate::showWindow
MainWinDelegate::awakeFromNib
MainWinDelegate::showWindow init part
MainWinDelegate::showWindow end
于 2012-09-04T08:25:46.787 に答える
0

次のいずれかを選択できます。

@interface MONTableData : NSObject

// a designated initializer:
- (id)init;
- (id)initWithCoder:(NSCoder *)pCoder;

// or when the `TableData`'s input data source is set:
- (void)setPhotoAlbum:(MONPhotoAlbum *)pPhotoAlbum;

@end
于 2012-09-04T06:51:57.883 に答える