Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何辞退故事板波波夫

如何辞退故事板波波夫
EN

Stack Overflow用户
提问于 2011-11-27 08:57:10
回答 6查看 46.9K关注 0票数 73

我使用Xcode故事板(所以没有代码)从UIBarButtonItem创建了一个弹出程序,如下所示:

呈现波波夫效果很好。然而,当我点击使其出现的UIBarButtonItem时,我无法让弹出器消失。

当(第一次)按下按钮时,就会出现弹出器。当再次按下按钮(第二次),同样的弹出会出现在上面,所以现在我有两个弹出(如果我继续按这个按钮的话)。根据iOS人机界面指南,我需要使弹出器出现在第一个点击上,然后在第二个按钮上消失:

确保一次只有一个弹出窗口在屏幕上可见。您不应该同时显示多个popover (或自定义视图,其外观和行为类似于popover)。特别是,您应该避免同时显示层叠或层次结构,其中一个弹出器是从另一个弹出的。

当用户第二次点击UIBarButtonItem时,我如何排除弹出窗口呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-19 16:10:09

编辑:这些问题似乎在iOS 7.1 / Xcode 5.1.1中得到了修复。(可能更早,因为我还不能测试所有版本。当然是在iOS 7.0之后,因为我测试了这个版本。)当您从UIBarButtonItem创建一个popover时,segue确保再次点击该弹出盖隐藏该弹出,而不是显示一个重复。它也适用于Xcode 6为UIPresentationController 8创建的新的-based弹出插件。

由于我的解决方案可能对那些仍然支持早期iOS版本的人具有历史意义,所以我将其放在下面。

如果您存储了对segue的popover控制器的引用,然后在重复调用prepareForSegue:sender:时将其设置为一个新的值,那么您所避免的就是在重复按下按钮时获得多个堆叠弹出的问题--您仍然不能按照HIG的建议(以及在苹果的应用程序中看到,等等)使用该按钮来关闭弹出器。

不过,您可以利用ARC对弱引用进行归零以获得一个简单的解决方案:

1:从按钮开始。

从iOS 5开始,您无法使用UIBarButtonItem中的一个segue来完成这个任务,但是可以在iOS 6和更高版本上完成。(在iOS 5上,您必须从视图控制器本身中分离,然后在检查弹出窗口后让按钮的操作调用performSegueWithIdentifier:。)

2:在-shouldPerformSegue...中使用对popover的引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@interface ViewController
@property (weak) UIPopoverController *myPopover;
@end

@implementation ViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // if you have multiple segues, check segue.identifier
    self.myPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (self.myPopover) {
        [self.myPopover dismissPopoverAnimated:YES];
        return NO;
    } else {
        return YES;
    }
}
@end

没有第三步!

这里使用零位弱引用的好处是,一旦弹出控制器被取消--无论是以编程方式在shouldPerformSegueWithIdentifier:中,还是通过用户在弹出器之外的某个地方自动地点击-- ivar再次进入nil,所以我们回到了初始状态。

如果不对弱引用进行归零,我们还必须:

  • myPopover = nil中删除它时设置它,以及
  • 将我们自己设置为popover控制器的委托,以便捕获popoverControllerDidDismissPopover:,并在那里设置myPopover = nil (因此,当popover被自动取消时,我们就会捕获)。
票数 114
EN

Stack Overflow用户

发布于 2011-11-28 11:51:13

我在这里找到了解决方案--在第一个prepareForSegue:https://stackoverflow.com/a/7938513/665396https://stackoverflow.com/a/7938513/665396中,将指向UIPopoverController和用户的指针存储在一个ivar/属性中,以便在随后的调用中排除该弹出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
@property (nonatomic, weak) UIPopoverController* storePopover;
...

- (void)prepareForSegue:(UIStoryboardSegue *)segue 
                 sender:(id)sender {
if ([segue.identifier isEqualToString:@"My segue"]) {
// setup segue here

[self.storePopover dismissPopoverAnimated:YES];
self.storePopover = ((UIStoryboardPopoverSegue*)segue).popoverController;
...
}
票数 13
EN

Stack Overflow用户

发布于 2012-03-11 06:17:03

我用过定制的曲目。

1

创建要在童话板中使用的自定义segue:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@implementation CustomPopoverSegue
-(void)perform
{
    // "onwer" of popover - it needs to use "strong" reference to retain UIPopoverReference
    ToolbarSearchViewController *source = self.sourceViewController;
    UIViewController *destination = self.destinationViewController;
    // create UIPopoverController
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:destination];
    // source is delegate and owner of popover
    popoverController.delegate = source;
    popoverController.passthroughViews = [NSArray arrayWithObject:source.searchBar];
    source.recentSearchesPopoverController = popoverController;
    // present popover
    [popoverController presentPopoverFromRect:source.searchBar.bounds 
                                       inView:source.searchBar
                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                     animated:YES];

}
@end

2

在视图中,控制器是segue的源/输入,例如,使用action启动segue:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    if(nil == self.recentSearchesPopoverController)
    {
        NSString *identifier = NSStringFromClass([CustomPopoverSegue class]);
        [self performSegueWithIdentifier:identifier sender:self];
    } 
}

3.

引用是由创建UIPopoverController的segue分配的--当删除popover时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    if(self.recentSearchesPopoverController)
    {
        [self.recentSearchesPopoverController dismissPopoverAnimated:YES];
        self.recentSearchesPopoverController = nil;
    }    
}

你好,彼得

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

https://stackoverflow.com/questions/8287242

复制
相关文章
怎样借助故事板做好用户体验设计?
在做用户体验设计的时候,研讨会和用户访谈是用研中最常用的两种手段,随后,将用户研究的结果合成为用户故事和用户流程,在这个基础上,我们可以构建合理的解决方案,然后将线框图、原型和设计结果传达给整个设计团队。换句话来说,所有的研究、设计和方案都是基于真实的用户,也就是我们定位为“目标用户”的人群,基于他们的表现、反映和反馈。为了让产品更优秀,我们必须明白产品的运作机制,了解用户都是怎么想的,而故事板,则是这一切的关键。 今天的文章当中,将着重介绍故事板,以及它是如何解决用户体验问题的。 故事板是什么 故事板最初
前朝楚水
2018/04/03
1.3K0
怎样借助故事板做好用户体验设计?
iOS中storyboard故事板使用Segue跳转界面、传值
在iOS的开发过程中,不可避免的要设计界面,在android中有xml设置界面和直接使用java代码设置界面控件两种方式,在之前的ios开发中也是类似的有xib文件设置界面及用代码直接设置控件两种方法,但后来又出了一种方式,就是storyboard故事板子,其实storyboard和xib文件很像,最大的不同之处在于一个xib文件对应一个ViewController视图控制器,而storyboard对应多个,基本一个应用只需要一个storyboard就可以了,不再需要为每个控制器创建一个xib文件,从这点上来说,还是很方便的,在storyboard中查看各个界面的跳转也很方便,但之前一直使用xib进行开发,对storyboard的使用不太熟悉,今天好好学习了一下其中的界面跳转和传值,用到了Segue这个东西,这里借着例子说明一下。
Cloudox
2021/11/23
1.5K0
iOS中storyboard故事板使用Segue跳转界面、传值
辞退大龄IT工程师?不!工程师将开始辞退公司
在整个2017年的5月份,高峰都在忙于为公司迎接A轮8000万元的投资。在此之前的小A轮,神州光大的“神行云兽服务”平台已经筹集了3600万元。
IT创事记
2022/06/16
3710
辞退大龄IT工程师?不!工程师将开始辞退公司
蘑菇定律:有病治病没病辞退
听刘润5分钟商学院,经常就会在不经意间心有戚戚然。有一节讲的是蘑菇定律。这是个让我印象非常深刻的定律。所以今天就拿出来和大家讲讲这个有病治病没病开除的蘑菇定律。大家要是阅读本文有收获还请多打赏,或者加个鸡腿。
用户1564362
2018/12/21
8670
蘑菇定律:有病治病没病辞退
还在试用期,程序员如何避免被辞退?
最近几个月,我司技术部门有一些人员的变动,自己身边也走了一些老同事,来了一些新人。
闰土大叔
2018/12/21
4K0
如何讲好这个“用户故事”
当你需要说服客户买你产品时, 当你需要因某事向老板申请资源时, 你要怎样做, 才能更好的达到你的目的呢? 其实这两个问题的解决方案就, 在之前的提效 | 如何写好设计文档一文中已经介绍过的用户故事(U
一个架构师
2022/06/27
6330
如何讲好这个“用户故事”
4步曲: 如何用故事点估计用户故事?
有多种方法可以估算应用开发项目。一种方法是使用所谓的故事点。虽然这种类型的估算可能不是最简单的,但使用Story Points进行估算可为应用开发者和客户带来好处。
Warren2Lynch
2019/01/11
3K0
4步曲: 如何用故事点估计用户故事?
Xcode:处理故事板的更好方式 享受Interface Builder的提示和技巧
Apple在Xcode 8中对Interface Builder进行了很大的改进。使用大小类变得更加直观,缩放故事板的能力非常方便,Interface Builder中的完整预览功能非常棒。对于那些对使用Interface Builder犹豫不决的人来说,这可能会成为一个交易破坏者。
iOSDevLog
2018/12/28
1.4K0
如何应对职业天花板
大部分人在职场工作一段时间后,就会有种现象,好像每天做的事情都是重复的。一旦有这种现象,那就表示现在的工作已经不能让自己成长了。如果这种现象持续很久,那这代表你遇到了阶段性的职场天花板。如果不能做出突破,阶段两个字就可以去掉了。
石云升
2022/08/25
3380
(十四)用户故事地图如何使用?
用户故事是一种思维,即故事思维,是运用故事的元素进行思考和设计,以求解决某种问题,达到特定效果的思维。在用户故事设计中,核心是要通过故事来传递信息,引起共鸣,解决问题。优秀的故事设计能力,是能够通过故事“带领”用户解决一个个现实的问题,产品在里面的作用是“带领”,扮演者领袖的的角色,组织资源,提供方案,置顶路线,客服困难,达成目标。
砖家认证
2019/12/30
1.4K0
(十四)用户故事地图如何使用?
如何拆卸双面电路板?
1、拆卸单面印刷电路板上的元器件:可采用牙刷法、丝网法、针头法、吸锡器、气动吸枪等方法。
高拓电子
2022/07/11
1.3K0
马尔可夫网络、马尔可夫模型、马尔可夫过程
这一节我们重点来讲一下马尔可夫,正如题目所示,看了会一脸蒙蔽,好在我们会一点一点的来解释上面的概念,请大家按照顺序往下看就会完全弄明白了,这里我给一个通俗易懂的定义,后面我们再来一个个详解。
大数据技术与机器学习
2019/11/20
2.8K0
马尔可夫性质、马尔可夫链和马尔可夫过程
前言 研究决策问题就一定听说过马尔可夫过程(Markov Process),这是一类非常重要的方法。现在非常热门的强化学习都是基于马尔可夫过程方法建立的。马尔可夫决策过程是研究随机序贯决策问题的理论基础,属于概率论和运筹学的交叉学科,同时,作为作为最优控制理论,也属于随机系统最优控制的范畴,具有广阔的应用范围和前景。
用户7623498
2021/12/04
1.9K0
如何防止抄袭PCB电路板
抄板也叫克隆或仿制,是对设计出来的PCB板进行反向技术研究;目前全新的定义:从狭义上来说,抄板仅指对电子产品电路板PCB文件的提取还原和利用文件进行电路板克隆的过程;从广义上来说,抄板不仅包括对电路板文件提取、电路板克隆、电路板仿制等技术过程,而且包括对电路板文件进行修改(即改板)、对电子产品外形模具进行三维数据的提取和模型仿制(即抄板)、对电子产品电路板上的各类电子元器件进行仿制、对电路板上加密了的芯片或单片机进行解密、对电子产品的系统软件进行反汇编等电子产品全套克隆的所有技术过程。
不脱发的程序猿
2021/01/20
1.5K0
核心板如何选择合适的封装?
核心板如何选择合适的封装? 核心板是一种集成了CPU、内存、存储、网络等功能的微型计算机模块,可以作为嵌入式系统的核心部件,或者作为开发板的扩展模块。核心板的封装方式决定了它与底板或者开发板的连接方式,影响着核心板的稳定性、可靠性、易用性和成本等方面。因此,选择合适的封装方式是核心板设计和使用的重要环节。本文将介绍两种常用的核心板封装方式:B2B封装和邮票孔封装,分析它们的优缺点以及适用场景,并给出选择建议。
武汉万象奥科
2023/08/10
2250
核心板如何选择合适的封装?
互联网“寒冬”不想被辞退,Android程序员该如何应对?
最近,在气候转凉的同时,互联网领域也是寒气逼人,许多人担心互联网寒冬的到来。其实,寒冬来了又怎样?关键在于你怎么看待互联网寒冬。
Android架构
2019/06/12
6490
互联网“寒冬”不想被辞退,Android程序员该如何应对?
构造哈夫曼树的哈夫曼算法
本文最后更新于 1170 天前,其中的信息可能已经有所发展或是发生改变。 #include "stdafx.h" #include "stdio.h" #define maxval 100.0 #pragma warning(disable:4996) typedef struct{ float weight; int parent, lchild, rchild; }hufmtree; void Huffman(hufmtree tree[]) { int i, j, p1, p2; int n,
Yuyy
2022/06/28
3990
波波到底有没有吸毒?VR可能最有发言权
随着VR应用范围的进一步扩大,它早已不再局限于大众熟知的游戏、影视、教育等领域,而是延伸触角,浸入了戒毒领域。
镁客网
2018/08/16
6420
波波到底有没有吸毒?VR可能最有发言权
哈夫曼树与哈夫曼编码
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:哈夫曼树与哈夫曼编码
废江_小江
2022/09/05
6370
哈夫曼树与哈夫曼编码
哈夫曼树 编码-# 哈夫曼树的应用——哈夫曼编码
  我们考虑这样一个要求:把成绩从百分制转为五级制。这样的题目你们大一就懂得做了:
宜轩
2022/12/29
6070

相似问题

如何辞退/关闭二级故事板

11

如何叫另一个故事板作为一个波波夫?

16

迅捷大师-细节辞退波波弗

13

波波夫UISplitViewController

11

缺陷套房波波夫

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文