0

我有一個簡單的iPad項目,有兩個容器的視圖。當選擇左側的條目時,右側會更新其詳細信息。右側視圖控制器在工具欄上也有UIBarButtonItem,它使用UIActivityController在不同的社交網絡上共享其內容。該按鈕與IBAction爲連接如下:顯示/隱藏UIBarButtonItem取決於視圖是否爲空

-(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

我不知道是否有辦法「隱藏」它,但是您可以將其enabled屬性設置爲NO,當您首次在viewDidLoad中創建按鈕時。或者,您可以延遲其創建,直到您更新右側的細節。

你如何啓用或創建它取決於你在做什麼來更新右側。通常的做法是在更新時重寫您設置的值的設置器。舉例來說,如果你設置稱爲detailString字符串屬性的值,你可以這樣做:

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

共享按鈕是通過在故事板 – AJ112 2013-05-08 23:54:29

+0

@ AJ112拖在它的上面手動添加工具欄,這是不是你在你的問題中所說的。因此,要使其適用於工具欄按鈕,請取消選中該按鈕在IB中啓用的複選框,然後爲其創建一個IBOutlet。然後改變我發佈到self.myButtonName.enabled = YES的最後一行; – rdelmar 2013-05-09 00:00:52

+0

我的錯誤。我正在使用iPhone導航欄,因此錯誤地在問題中寫了這部分內容。我現在已經更新了這個問題。 iPad項目有一個工具欄,我已經拖動了一個uibarbutton項目並將其與 - (IBAction)連接分享:(id)發件人 – AJ112 2013-05-09 00:08:22