根据视图是不是为空显示/隐藏 UIBarButtonItem
Posted
技术标签:
【中文标题】根据视图是不是为空显示/隐藏 UIBarButtonItem【英文标题】:Show / Hide UIBarButtonItem Depending On If The View Is Empty Or Not根据视图是否为空显示/隐藏 UIBarButtonItem 【发布时间】:2013-05-08 23:30:17 【问题描述】:我有一个简单的 iPad 项目,其视图有两个容器。选择左侧的条目后,右侧会更新其详细信息。右视图控制器在工具栏上也有 UIBarButtonItem,它使用 UIActivityController 在不同的社交网络上共享其内容。该按钮与 IBAction 的连接方式如下:
-(IBAction)Share:(id)sender
NSArray *activityItems = @[self.title, urlString];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed)
NSLog(@"Activity = %@",activityType);
NSLog(@"Completed Status = %d",completed);
if (completed)
UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Successfully Shared" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[objalert show];
objalert = nil;
else
UIAlertView *objalert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Unable To Share" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[objalert show];
objalert = nil;
];
一切正常,但是当应用程序第一次打开时,右侧是空的,点击分享按钮会导致崩溃。
当右视图控制器为空并且仅当视图控制器中有内容时才出现条形按钮项时,如何隐藏条形按钮??
提前致谢。
【问题讨论】:
【参考方案1】:我不知道是否有办法“隐藏”它,但是当你第一次在 viewDidLoad 中创建按钮时,你可以将它的 enabled 属性设置为 NO。或者,您可以延迟它的创建,直到您用详细信息更新右侧。
然后如何启用或创建它取决于您更新右侧的操作。一种常见的方法是在进行更新时覆盖您正在设置的值的设置器。例如,如果你正在设置一个名为 detailString 的字符串属性的值,你可以这样做:
-(void)setDetailString:(NSString *) newString
_detailString = newString;
self.navigationItem.rightBarButtonItem.enabled = YES;
【讨论】:
分享按钮位于工具栏上,通过拖入情节提要手动添加到该工具栏上 @AJ112,这不是你在问题中所说的。因此,要使其适用于工具栏按钮,请取消选中 IB 中为该按钮启用的复选框,并为其创建一个 IBOutlet。然后将我发布的最后一行更改为 self.myButtonName.enabled = YES; 我的错误。我正在使用 iPhone 的导航栏,所以错误地在问题中写了那部分。我现在已经更新了这个问题。 iPad 项目有一个工具栏,我在该工具栏上拖动了一个 uibarbutton 项目并将其与 -(IBAction)Share:(id)sender 连接 @AJ112,我最后的评论没有回答你的问题吗?以上是关于根据视图是不是为空显示/隐藏 UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章
如果链接字段的标题值在 drupal 7 视图中为空,如何隐藏标题?
检查 DateTime 类型的值是不是在视图中为空,如果为空则显示空白
在视图中显示之前检查 ListBoxFor selectedValues 是不是为空?