Objective c contentViewController((null))或contentViewController.view为nil

Objective c contentViewController((null))或contentViewController.view为nil,objective-c,nspopover,Objective C,Nspopover,我得到了以下错误和stacktrace,但是视图不是nil(如之前的日志记录所示) 堆栈跟踪 2014-02-05 08:29:47.338 MenuTimer[74522:303] An uncaught exception was raised 2014-02-05 08:29:47.338 MenuTimer[74522:303] The contentViewController ((null)) or contentViewController.view is nil. 2014-02

我得到了以下错误和stacktrace,但是视图不是nil(如之前的日志记录所示)

堆栈跟踪

2014-02-05 08:29:47.338 MenuTimer[74522:303] An uncaught exception was raised
2014-02-05 08:29:47.338 MenuTimer[74522:303] The contentViewController ((null)) or contentViewController.view is nil.
2014-02-05 08:29:47.340 MenuTimer[74522:303] (
    0   CoreFoundation                      0x00007fff8e39341c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff87b1ee75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff8e3932cc +[NSException raise:format:] + 204
    3   AppKit                              0x00007fff8157e3da -[NSPopover showRelativeToRect:ofView:preferredEdge:] + 228
    4   MenuTimer                           0x0000000100002a72 -[MenuTimer onSetTime:] + 818
    5   AppKit                              0x00007fff814f83d0 -[NSApplication sendAction:to:from:] + 327
    6   AppKit                              0x00007fff81513348 -[NSMenuItem _corePerformAction] + 394
    7   AppKit                              0x00007fff81513084 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 117
    8   AppKit                              0x00007fff815624dd -[NSMenu _internalPerformActionForItemAtIndex:] + 35
    9   AppKit                              0x00007fff81562359 -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 104
    10  AppKit                              0x00007fff81509176 NSSLMMenuEventHandler + 716
    11  HIToolbox                           0x00007fff8acff6d4 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 892
    12  HIToolbox                           0x00007fff8acfec87 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 385
    13  HIToolbox                           0x00007fff8ad12d90 SendEventToEventTarget + 40
    14  HIToolbox                           0x00007fff8ad48a30 _ZL18SendHICommandEventjPK9HICommandjjhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef + 420
    15  HIToolbox                           0x00007fff8ad7b618 SendMenuCommandWithContextAndModifiers + 59
    16  HIToolbox                           0x00007fff8ad7b5c4 SendMenuItemSelectedEvent + 178
    17  HIToolbox                           0x00007fff8ad7b4a5 _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 94
    18  HIToolbox                           0x00007fff8ad5956e _ZL19PopUpMenuSelectCoreP8MenuData5PointdS1_tjPK4RecttjS4_S4_PK10__CFStringPP13OpaqueMenuRefPt + 1726
    19  HIToolbox                           0x00007fff8ad586c6 _HandlePopUpMenuSelection7 + 596
    20  AppKit                              0x00007fff81561221 _NSSLMPopUpCarbonMenu3 + 4153
    21  AppKit                              0x00007fff815601d6 _NSPopUpCarbonMenu3 + 39
    22  AppKit                              0x00007fff8155fe96 -[NSCarbonMenuImpl popUpMenu:atLocation:width:forView:withSelectedItem:withFont:withFlags:withOptions:] + 350
    23  AppKit                              0x00007fff81950959 +[NSStatusBarButtonCell popupStatusBarMenu:inRect:ofView:withEvent:] + 699
    24  AppKit                              0x00007fff81951ade -[NSStatusItem popUpStatusItemMenu:] + 173
    25  MenuTimer                           0x0000000100001779 -[StatusBarView mouseDown:] + 633
    26  AppKit                              0x00007fff814ded08 -[NSWindow sendEvent:] + 11296
    27  AppKit                              0x00007fff815da11b -[NSStatusBarWindow sendEvent:] + 247
    28  AppKit                              0x00007fff8147d744 -[NSApplication sendEvent:] + 2021
    29  AppKit                              0x00007fff812cda29 -[NSApplication run] + 646
    30  MenuTimer                           0x0000000100002500 -[MenuTimer init] + 2112
    31  MenuTimer                           0x00000001000031b5 main + 101
    32  libdyld.dylib                       0x00007fff87fcc5fd start + 1
)
但是,以下代码和输出的指示不同。是因为我没有显式控制器吗

代码

输出

2014-02-05 08:29:47.237 MenuTimer[74522:303] Set Time...
2014-02-05 08:29:47.237 MenuTimer[74522:303] View <StatusBarView: 0x6080001b05a0>
2014-02-05 08:29:47.238 MenuTimer[74522:303] Frame <StatusBarView: 0x6080001b05a0>
2014-02-05 08:29:47.238 MenuTimer[74522:303] Showing popover...
2014-02-05 08:29:47.237菜单项[74522:303]设置时间。。。
2014-02-05 08:29:47.237菜单用户[74522:303]视图
2014-02-05 08:29:47.238菜单项[74522:303]帧
2014-02-05 08:29:47.238展示popover的MenuTimer[74522:303]。。。

在显示之前,您需要设置contentViewController(popover实际显示的内容)

i、 e


视图的
ofView:
参数正是显示popover的位置。

项目部署目标?10.9 Mavericks xCode 5.0.2self.statusTime-它是什么?这是一个窗口?它是设置了自定义视图的NSStatusItem。如何将自定义视图设置为status item?IB?以编程方式?
2014-02-05 08:29:47.237 MenuTimer[74522:303] Set Time...
2014-02-05 08:29:47.237 MenuTimer[74522:303] View <StatusBarView: 0x6080001b05a0>
2014-02-05 08:29:47.238 MenuTimer[74522:303] Frame <StatusBarView: 0x6080001b05a0>
2014-02-05 08:29:47.238 MenuTimer[74522:303] Showing popover...
NSViewController *viewController; // some view controller created programmatically or from a nib

NSPopover *popover = [[NSPopover alloc] init];
popover.contentViewController = viewController; // Missing this.
NSLog(@"Showing popover...");
[popover showRelativeToRect:[self.statusTime.view frame]
                     ofView:self.statusTime.view
              preferredEdge:NSMinYEdge];