gpt4 book ai didi

iphone - UIStoryboardPopoverSegue 在按钮触摸时打开多个窗口

转载 作者:行者123 更新时间:2023-12-03 18:23:26 26 4
gpt4 key购买 nike

我正在使用 UIStoryboardPopoverSegue 来呈现 iOS 5 iPad 应用程序的弹出窗口。 Segue 效果很好,但似乎包含该按钮的工具栏是弹出窗口 Controller 的直通 View ,因此如果您继续按该按钮,则会出现更多弹出窗口。由于我没有自己创建和跟踪 UIPopoverController (因为 Storyboard 正在这样做),因此当再次触摸按钮时我无法将其关闭。还有其他人遇到过这个吗?我向 Apple 提出了一个错误,但他们尚未回复。

编辑:我已经使用下面的答案解决了这个问题。这是我最终使用的代码。 currentPopover 是我的 View Controller 类中的 __weak ivar,因此当 Controller 完成时,它将自动降至 nil。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue isKindOfClass:[UIStoryboardPopoverSegue class]]){
// Dismiss current popover, set new popover
[currentPopover dismissPopoverAnimated:YES];
currentPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
}
}

最佳答案

您的解决方案 Cory 存在一些视觉问题。

可以考虑的两个选项 - 只需删除或更改呈现弹出框的按钮的操作即可。

选项 1,将指针指向按钮的操作,并在弹出窗口出现后,将操作设置为 nil。弹出窗口消失后重置为原始操作。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

action = [sender action];
[sender setAction:nil];

self.currentPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
self.currentPopover.delegate = self;
}

-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
[self.navigationItem.rightBarButtonItem setAction:action];

return YES;
}

这样,弹出窗口只能出现一次,并且将按预期消失。

第二个选项是更改按钮的功能,以便当弹出窗口可见时,点击按钮将导致弹出窗口消失。

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

action = [sender action];
target = [sender target];

[sender setTarget:self];
[sender setAction:@selector(dismiss:)];

self.currentPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
self.currentPopover.delegate = self;
}

-(void)dismiss:(id)sender
{
[self.navigationItem.rightBarButtonItem setAction:action];
[self.navigationItem.rightBarButtonItem setTarget:target];
////or
// [sender setAction:action];
// [sender setTarget:target];
[self.currentPopover dismissPopoverAnimated:YES];
}


-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
[self.navigationItem.rightBarButtonItem setAction:action];
[self.navigationItem.rightBarButtonItem setTarget:target];

return YES;
}

关于iphone - UIStoryboardPopoverSegue 在按钮触摸时打开多个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7758837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com