私はこのコードを使用しています....私はウィンドウにそのビューを置きたい、XIBファイルのビューを持っている:私はそうxibからビューをインスタンス化する方法は?
- (void) popupNotificationWithTag:(NSString *)tag fade:(double)msFade lineOne:(NSString *)lineOneText lineTwo:(NSString *)lineTwoText
{
NotificationWindow *notificationWindow;
NotificationWindow *tmpWindow;
NSEnumerator *enumerator;
// Walk the notification windows in the array
enumerator = [self.notificationWindows objectEnumerator];
if(enumerator)
{
while((tmpWindow = [enumerator nextObject]))
{
if([tmpWindow.tag isEqualToString:tag])
{
notificationWindow = tmpWindow;
}
}
}
// Make a new notification window
if (!notificationWindow)
{
int width = [[NSScreen mainScreen] frame].size.width;
int height = [[NSScreen mainScreen] frame].size.height;
notificationWindow = [[NotificationWindow alloc] initWithRect:NSMakeRect(width - 420, height - 130, 400, 100)];
NSNib *nib = [[NSNib alloc] initWithNibNamed:@"Notification" bundle: nil];
NSArray *objects;
[nib instantiateNibWithOwner:self topLevelObjects:&objects];
[notificationWindow setContentView: [objects objectAtIndex:0]];
[notificationWindow setTag:tag];
[self.notificationWindows addObject:notificationWindow];
}
// Display window
[notificationWindow makeKeyAndOrderFront:nil];
[notificationWindow display];
notificationWindow.fadeOut = msFade;
[notificationWindow setPrimaryText:lineOneText];
}
をビューがXIBファイルで唯一のものですobjectAtIndex:0
はOKでしたが、その行には-[NSApplication setFrame:]: unrecognized selector sent to instance 0x100508500
の例外があります。
更新私はこのコードブロックで行を置き換える:
for (id obj in objects) {
if ([[obj class] isSubclassOfClass:[NSView class]])
[notificationWindow setContentView: obj];
}
'nib instantiateNibWithOwner:self topLevelObjects:&objects];'の直後にブレークポイントを設定し、 'objects'配列のカウントがゼロより大きいかどうかを教えてください。そうであれば、どのような種類のオブジェクト( 'className'?)を見つけることができますか?インデックス0の項目は? [この質問の答えを見る](http://stackoverflow.com/questions/1144629/in-objective-c-how-do-i-test-the-object-type)これを行う方法を教えてください。 –
@MichaelDautermann - 2つのオブジェクトがありますが、順序はランダムであるようです。投稿されたコードは時々動作し、他のコードは動作しません。問題を修正した編集を投稿します。 – Justin808
'[[objクラス] isSubclassOfClass:[NSViewクラス]]'は '[obj isKindOfClass:[NSView class]] 'と書かれている必要があります – user102008