当前位置:  开发笔记 > 编程语言 > 正文

如何动态隐藏视图中的按钮?

如何解决《如何动态隐藏视图中的按钮?》经验,为你挑选了6个好方法。

我想根据某个条件动态隐藏我的一个视图中的按钮.

我尝试在视图控制器的-viewWillAppear方法中添加一些代码,在显示实际视图之前隐藏按钮,但我仍然不知道如何做到这一点.

我通过IBOutlet引用了按钮,但我不确定如何从这里向前推进.作为参考,这是一个UIBarButtonItem实例.



1> Ben Gottlieb..:

如果您试图隐藏UIBarButtonItem,您实际上必须修改父栏的内容.如果是UIToolBar,则需要将bar的items数组设置为不包含项目的数组.

NSMutableArray     *items = [[myToolbar.items mutableCopy] autorelease];
[items removeObject: myButton];
myToolbar.items = items;



2> 小智..:

将条形项设置为nil.

例如:

self.navigationItem.leftBarButtonItem = nil;



3> 小智..:

所以我尝试了Ben的胜利方法,但最后我发现它对我的目的是错误的 - 尽管我确定这取决于你想要做什么.我试图仅在某些条件下显示导航栏按钮,然后在条件不再满足时立即隐藏它(在我的情况下,它是用于隐藏与UITextView关联的键盘的"完成"按钮.它应该只是当用户在文本视图中键入时显示).我的步骤如下:

    我在UIViewController类中添加了一个UIBarButtonItem作为属性.我在initWithNibName方法中实例化它.

    一旦用户开始在文本视图中键入,我就在导航栏中将UIBarButtonItem属性指定为rightBarButtonItem.

    当用户完成输入时,我将UIBarButtonItem属性设置为nil.

它的工作就像一个魅力.我在下面添加一些代码示例.

首先在我的视图控制器init方法中实例化按钮:

barButtonItemDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)];

然后我将其设置为委托方法中的右侧栏按钮,一旦用户开始编辑文本视图,就会调用该按钮:

self.navigationItem.rightBarButtonItem=[self barButtonItemDone];

最后,当单击按钮本身时,会调用一个名为"done"的方法,我只是在该方法中将rightBarButtonItem设置为nil:

self.navigationItem.rightBarButtonItem=nil;



4> Sara..:

如果所有人都试图隐藏的是导航栏中的后退按钮,则有一种更简单的方法:

self.navigationItem.hidesBackButton = YES;

从开发者文档引用:

hidesBackButton

一个布尔值,用于确定是否隐藏了后退按钮.

@property(nonatomic,assign)BOOL hidesBackButton

讨论

如果此导航项是最高项时隐藏了后退按钮,则为YES; 否则,不.默认值为NO.

可用性

适用于iPhone OS 2.0及更高版本.



5> Michael..:

这有点像黑客,但它适用于我的情况(它正确处理动态间距):

隐藏:

myButton.width = 0.1;

显示:

myButton.width = 0.0;

宽度为0.0是"自动宽度",宽度为0.1时,按钮完全消失(甚至不是按钮的"条子",尽管我没有在视网膜显示器上尝试过这种情况).



6> jonnysamps..:

另一个hacky解决方案:

myButton.customView = [[UIView alloc] init];

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有