首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择行时是否取消弹出?

选择行时是否取消弹出?
EN

Stack Overflow用户
提问于 2011-08-23 09:13:05
回答 1查看 3.1K关注 0票数 2

当UISPlitViewControler处于弹出模式时,从其主视图中选择行。它不是应该自动解除吗?我怎样才能在那里修复它?

通常我会执行[self.popoverController dismissPopoverAnimated:YES];,但在这种情况下无法识别popoverController

我以为UISplitViewController应该自动做这件事?

下面是我的detailViewCOntroller中的UISplitViewDelegate代码:

代码语言:javascript
复制
- (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];
}

在我的应用委派中,我有:

代码语言:javascript
复制
@property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;
@property (nonatomic, retain) IBOutlet DetailViewControlleriPad *rightViewController;
@property (nonatomic, retain) IBOutlet RootViewController * leftViewController;

这些属性在IB中被挂起。RootViewController会推送到其他表视图,这些表视图在popover模式下被选中时需要清除。

编辑

代码语言:javascript
复制
- (void)setDetailItem:(id)newDetailItem
{
    if (detailItem != newDetailItem)
    {
        [detailItem release];
        detailItem = [newDetailItem retain];
        [self.myTableView reloadData];
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-23 10:34:57

我总是必须手动显式地关闭弹出窗口。为此,在将popover视图控制器传递给我的UISplitViewControllerDelegate时,获取对它的引用:

代码语言:javascript
复制
- (void)splitViewController:(UISplitViewController*)svc 
     willHideViewController:(UIViewController *)aViewController 
          withBarButtonItem:(UIBarButtonItem*)barButtonItem 
       forPopoverController:(UIPopoverController*)pc
{
    splitViewPopover = [pc retain];
    // Other stuff
}

因为我这样做了,所以当引用不再有效时,我还必须释放它:

代码语言:javascript
复制
- (void)splitViewController:(UISplitViewController*)svc 
     willShowViewController:(UIViewController *)aViewController 
  invalidatingBarButtonItem:(UIBarButtonItem *)button 
{    
    [splitViewPopover release];
    splitViewPopover = nil;
    // Other stuff
}

然后,当在我的主视图控制器中选择了一个项目时,我更新我的细节控制器并关闭弹出窗口:

代码语言:javascript
复制
[splitViewPopover dismissPopoverAnimated:NO];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7155313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档