我是ios的新手。我有一个导航栏,其中包含多个按钮,包括后退按钮,排序,过滤器,设置按钮和打开弹出窗口的按钮。从UIPopoverController
内的navigationItem
打开时,UINavigationController
不会被解雇。
当我点击过滤导航项目popoverView
控制器工作正常,但问题是如果我点击其他导航项目,如返回,排序,设置不解雇。当我点击或触摸导航栏popover不解雇如何纠正这个问题?
viewController.h
IBOutlet UINavigationBar *navigationBar;
viewController.m
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];
答案 0 :(得分:0)
尝试在每个条形按钮项的回调中解除弹出框。例如:
-(void)onEditIssue:(id)sender
{
if ([popoverController isPopoverVisible])
[popoverController dismissPopoverAnimated:YES];
//Do other stuff
}
答案 1 :(得分:0)
This问题已被接受的答案对我有用。在呈现弹出控制器的passthroughViews
之后将其设置为nil。