0

2 つのコンテナーを持つビューを持つ単純な 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;
         }
     }];
}

すべて正常に動作しますが、アプリを初めて開いたときに右側が空で、[共有] ボタンをタップするとクラッシュします。

右側のView Controllerが空で、View Controllerにコンテンツがある場合にのみバーボタンアイテムが表示されるときにバーボタンを非表示にするにはどうすればよいですか??

前もって感謝します。

4

1 に答える 1

1

「非表示」にする方法があるかどうかはわかりませんが、viewDidLoad で最初にボタンを作成するときに、有効なプロパティを NO に設定できます。または、右側を詳細で更新するまで、作成を遅らせることもできます。

有効化または作成する方法は、右側を更新するために何をしているかによって異なります。一般的な方法は、更新を行うときに値を設定しているもののセッターをオーバーライドすることです。たとえば、detailString という文字列プロパティの値を設定する場合は、次のようにします。

-(void)setDetailString:(NSString *) newString {
    _detailString = newString;
    self.navigationItem.rightBarButtonItem.enabled = YES;
}
于 2013-05-08T23:47:34.990 に答える