9
我沒有找到一些使用Interface Builder動態創建NSPopover的示例。如何以編程方式創建NSPopover
下面的代碼給出了一個例外,加載筆尖,但沒有視圖設置:
NSViewController *controller = [[NSViewController alloc] initWithNibName:@"View" bundle:nil];
NSPopover *popover = [[NSPopover alloc] init];
[popover setContentSize:NSMakeSize(100.0f, 100.0f)];
[popover setContentViewController:controller];
[popover setAnimates:YES];
[popover showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
[popover release];
[controller release];
這裏是堆棧跟蹤:
2011-10-22 12:00:16.804 Test[2020:707] -[NSViewController loadView] loaded the "View" nib but no view was set.
2011-10-22 12:00:16.807 Test[2020:707] (
0 CoreFoundation 0x00007fff87e10286 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff92f2cd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff87e100ba +[NSException raise:format:arguments:] + 106
3 CoreFoundation 0x00007fff87e10044 +[NSException raise:format:] + 116
4 AppKit 0x00007fff90951e21 -[NSViewController loadView] + 336
5 AppKit 0x00007fff9094da8a -[NSViewController view] + 41
6 AppKit 0x00007fff91065232 -[NSPopover showRelativeToRect:ofView:preferredEdge:] + 159
7 Test 0x000000010000159a -[OITAppDelegate show:] + 570
8 CoreFoundation 0x00007fff87dffa1d -[NSObject performSelector:withObject:] + 61
9 AppKit 0x00007fff90924710 -[NSApplication sendAction:to:from:] + 139
10 AppKit 0x00007fff90924642 -[NSControl sendAction:to:] + 88
11 AppKit 0x00007fff9092456d -[NSCell _sendActionFrom:] + 137
12 AppKit 0x00007fff90923a30 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2014
13 AppKit 0x00007fff909a38e0 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 489
14 AppKit 0x00007fff9092263a -[NSControl mouseDown:] + 786
15 AppKit 0x00007fff908ed0e0 -[NSWindow sendEvent:] + 6306
16 AppKit 0x00007fff9088568f -[NSApplication sendEvent:] + 5593
17 AppKit 0x00007fff9081b682 -[NSApplication run] + 555
18 AppKit 0x00007fff90a9a80c NSApplicationMain + 867
19 Test 0x00000001000012f2 main + 34
20 Test 0x00000001000012c4 start + 52
21 ??? 0x0000000000000003 0x0 + 3
感謝您對這個老問題的良好回答。一個相關的問題:你怎麼知道這個異常與未分配* view *出口,而不是其他東西 - 說,未能分配popover的* contentViewController *出口? –
@MarkBernstein這個消息文本的異常只會在加載沒有分配'view'屬性時引發。 – hamstergene