2016-08-03 97 views
6

我想用UIActionSheet爲iOS8上,但它不贊成,我不知道如何使用更新的方式來使用這個......UIActionSheet上不再iOS8上

看到舊代碼:

-(void)acoesDoController:(UIViewController *)controller{ 
    self.controller = controller; 
    UIActionSheet *opcoes = [[UIActionSheet alloc]initWithTitle:self.contato.nome delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles:@"other", nil]; 

    [opcoes showInView:controller.view]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

    //switch case of the buttons 

} 

爲了清楚起見,在本例中,在UITableView索引中長按之後,激活操作表。

如何以正確的方式實現上面的代碼?

+0

對於未來的參考,如果你看一下[UIActionSheet]的文檔(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActionSheet_Class/)它清楚地標記被廢棄從iOS8開始,它甚至會告訴你什麼是替換類。當你去[UIAlertController]的文檔(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertController_class/index.html#//apple_ref/occ/cl/UIAlertController)它甚至給你一個如何使用它的例子。學習閱讀文檔是改進的重要第一步。 – Abizern

+0

感謝您的提示!我仍然以objective-c開始。 –

回答

27

您可以使用相同的UIAlertController。

UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"Action Sheet" message:@"alert controller" preferredStyle:UIAlertControllerStyleActionSheet]; 

     [actionSheet addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { 

      // Cancel button tappped. 
      [self dismissViewControllerAnimated:YES completion:^{ 
      }]; 
     }]]; 

     [actionSheet addAction:[UIAlertAction actionWithTitle:@"Delete" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { 

      // Distructive button tapped. 
      [self dismissViewControllerAnimated:YES completion:^{ 
      }]; 
     }]]; 

     [actionSheet addAction:[UIAlertAction actionWithTitle:@"Other" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

      // OK button tapped. 

      [self dismissViewControllerAnimated:YES completion:^{ 
      }]; 
     }]]; 
    // Present action sheet. 
    [self presentViewController:actionSheet animated:YES completion:nil]; 
+0

Xcode顯示每個方法「[self dismissViewControllerAnimated:YES completion:^ {...}沒有在@interfaces中聲明...我該如何解決它?...同樣的情況發生在」[self presentViewController:actionSheet動畫:YES完成:無];「 –

+0

你能分享你的更新代碼嗎? – Nilesh

+0

我已經解決了,謝謝。我試圖在一個不同於tableView的類中實現它。我移動了代碼,一切工作正常...但是...是否有可能爲此方法創建另一個類?如果你仍然需要我可以分享我的代碼。 –