显示/隐藏UIBarButtonItem,具体取决于视图是否为空

时间:2013-05-08 23:30:17

标签: ios objective-c uinavigationbar uibarbuttonitem uinavigationitem

我有一个简单的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 个答案:

答案 0 :(得分:1)

我不知道是否有办法“隐藏”它,但是当你第一次在viewDidLoad中创建按钮时,你可以将其enabled属性设置为NO。或者,您可以延迟创建,直到您更新右侧的详细信息。

然后如何启用或创建它取决于您正在做什么来更新右侧。一种常见的方法是覆盖您在进行更新时设置值的设置器。例如,如果您设置名为detailString的字符串属性的值,则可以执行以下操作:

-(void)setDetailString:(NSString *) newString {
    _detailString = newString;
    self.navigationItem.rightBarButtonItem.enabled = YES;
}