当UISPlitViewControler处于弹出模式时,从其主视图中选择行。它不是应该自动解除吗?我怎样才能在那里修复它?
通常我会执行[self.popoverController dismissPopoverAnimated:YES];,但在这种情况下无法识别popoverController。
我以为UISplitViewController应该自动做这件事?
下面是我的detailViewCOntroller中的UISplitViewDelegate代码:
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
{
barButtonItem.title = @"Medical Codes";
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[items insertObject:barButtonItem atIndex:0];
[self.toolbar setItems:items animated:YES];
[items release];
}
// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[items removeObjectAtIndex:0];
[self.toolbar setItems:items animated:YES];
[items release];
}在我的应用委派中,我有:
@property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;
@property (nonatomic, retain) IBOutlet DetailViewControlleriPad *rightViewController;
@property (nonatomic, retain) IBOutlet RootViewController * leftViewController;这些属性在IB中被挂起。RootViewController会推送到其他表视图,这些表视图在popover模式下被选中时需要清除。
编辑
- (void)setDetailItem:(id)newDetailItem
{
if (detailItem != newDetailItem)
{
[detailItem release];
detailItem = [newDetailItem retain];
[self.myTableView reloadData];
}
}发布于 2011-08-23 10:34:57
我总是必须手动显式地关闭弹出窗口。为此,在将popover视图控制器传递给我的UISplitViewControllerDelegate时,获取对它的引用:
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
splitViewPopover = [pc retain];
// Other stuff
}因为我这样做了,所以当引用不再有效时,我还必须释放它:
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)button
{
[splitViewPopover release];
splitViewPopover = nil;
// Other stuff
}然后,当在我的主视图控制器中选择了一个项目时,我更新我的细节控制器并关闭弹出窗口:
[splitViewPopover dismissPopoverAnimated:NO];https://stackoverflow.com/questions/7155313
复制相似问题