2011-10-22 26 views
9

nasıl oluşturulur? Arabirim Oluşturucusu'nu kullanarak, dinamik olarak NSPopover oluşturmak için bazı örnekler bulamadım. kod sonraNSPopover, programlı olarak

bir istisna, yüklü ucunu verir, ama görünüm ayarlanır: Burada

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]; 

Yığın izleme:

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 

cevap

15

sorun NSPopover değildir; istisna NSViewController tarafından atılır ve uç yükünün başarılı olmasına rağmen, view özelliğinin hala nil olduğunu belirtir.

Interface Builder

Aç “View.nib” ve denetleyici (bir kalem ucu yüklediğinde NSViewContoller dosya sahibi olur) temsil etmek gerekiyordu olduğunu görünüm nesnesine Dosya Sahibi 'ın view çıkış atayın. Bu, Ctrl-Dosya Sahibi simgesinden görünüm simgesine sürükleme ve ardından çıkışlar listesinden view'u seçerek yapılır.

+1

Bu eski sorunun iyi cevabı için teşekkürler. İlgili bir soru: Bu istisnanın, * view * çıkışını başka bir şeyin aksine atayamamasıyla ilgili olarak, popover’ın * contentViewController * çıkışını atamadığınızı nasıl anladınız? –

+1

@MarkBernstein Bu mesaj metni istisnası sadece yükleme "view" özelliğini atamadığı zaman kaldırılır. – hamstergene