首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击NavigationBar和NavigationBar项目时,UIPopoverController不会忽略

单击NavigationBar和NavigationBar项目时,UIPopoverController不会忽略
EN

Stack Overflow用户
提问于 2013-03-14 21:19:56
回答 2查看 667关注 0票数 0

我是新手在ios .I中有一个导航栏,其中包含多个按钮,包括后退按钮,排序,过滤器,设置按钮和一个打开弹出窗口的按钮。当从UINavigationController中的navigationItem打开时,UIPopoverController不会被关闭。

当我点击过滤器导航项目popoverView控制器工作正常,但问题是,如果我点击其他导航项目,如后退,排序,设置不是dismissing.when我点击或触摸导航栏弹出没有解除如何纠正这个问题?

viewController.h

代码语言:javascript
复制
    IBOutlet UINavigationBar *navigationBar;

viewController.m

代码语言:javascript
复制
UIBarButtonItem *leftButton = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"back_btn.png"] target:self action:@selector(onBack)];

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@""];

UIButton *btnMainLogo = [UIButton buttonWithType:UIButtonTypeCustom];

[btnMainLogo setImage:[UIImage imageNamed:@"dina_new_logo.png"] forState:UIControlStateNormal];
btnMainLogo.frame = CGRectMake(0, 0, 160, 36);
[btnMainLogo addTarget:self action:@selector(onHome) forControlEvents:UIControlEventTouchUpInside];
item.titleView = btnMainLogo;

item.leftBarButtonItem = leftButton;
item.hidesBackButton = YES;

//RIGHT MENU
NSMutableArray *arrRightBarItems = [[NSMutableArray alloc] init];
UIButton *btnSetting = [UIButton buttonWithType:UIButtonTypeCustom];
[btnSetting setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
btnSetting.frame = CGRectMake(0, 0, 32, 32);
btnSetting.showsTouchWhenHighlighted=YES;
[btnSetting addTarget:self action:@selector(onSettings:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnSetting];

UIButton *btnShare = [UIButton buttonWithType:UIButtonTypeCustom];
[btnShare setImage:[UIImage imageNamed:@"share-icon.png"] forState:UIControlStateNormal];
btnShare.frame = CGRectMake(0, 0, 32, 32);
btnShare.showsTouchWhenHighlighted=YES;
[btnShare addTarget:self action:@selector(onShare:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem1 = [[UIBarButtonItem alloc] initWithCustomView:btnShare];

UIBarButtonItem *edit = [[UIBarButtonItem alloc]
                           initWithTitle:@"Edit"
                           style:UIBarButtonItemStylePlain
                           target:self
                           action:@selector(onEditIssue:)];
UIBarButtonItem *sortByDate = [[UIBarButtonItem alloc]
                         initWithTitle:@"Sort"
                         style:UIBarButtonItemStylePlain
                         target:self
                         action:@selector(onSortByDate:)];
UIBarButtonItem *FilterByIssue = [[UIBarButtonItem alloc]
                         initWithTitle:@"Filter"
                         style:UIBarButtonItemStylePlain
                         target:self
                         action:@selector(onFilterByIssue:)];



NSArray *arrBtns = [[NSArray alloc]initWithObjects:barButtonItem,barButtonItem1,edit,sortByDate,FilterByIssue, nil];
[arrRightBarItems addObjectsFromArray:arrBtns];
[item setRightBarButtonItems:arrRightBarItems];
[navigationBar pushNavigationItem:item animated:NO];
EN

回答 2

Stack Overflow用户

发布于 2013-03-14 22:08:23

尝试在每个栏按钮项的回调中取消弹出。例如:

代码语言:javascript
复制
-(void)onEditIssue:(id)sender
{
    if ([popoverController isPopoverVisible])
        [popoverController dismissPopoverAnimated:YES];
    //Do other stuff
}
票数 0
EN

Stack Overflow用户

发布于 2014-03-14 07:35:26

This answer的被接受的答案对我很有效。将popover控制器的passthroughViews设置为nil。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15410419

复制
相关文章

相似问题

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