2014-09-02 4 views
4

Voici le code que j'utilise pour Swift airprinting avec bêta 6 et il a bien fonctionné:impression dans iOS de Swift dans XCode 6 beta 7

@IBAction func button3Tapped() { 
    var pic:UIPrintInteractionController = .sharedPrintController() 
    var viewpf:UIViewPrintFormatter = myTextView.viewPrintFormatter() 
    pic.delegate = self 
    pic.showsPageRange = true 
    pic.printFormatter = viewpf 
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
     pic.presentFromRect(self.myButton3.frame, inView:self.view, animated:true, completionHandler: nil) 
    } else { 
     pic.presentAnimated(true, completionHandler: nil) 
    } 
} 

Bien sûr, bêta 7, il a rompu avec une « Valeur en option tapez 'UIPrintInteractionController' non déballé, vouliez-vous utiliser! ou ?? " sur la première ligne de var. Malheureusement, le correctif proposé par XCode ne le résout pas, et je ne suis pas assez intelligent pour le comprendre moi-même!

Répondre

3

Xcode 6 beta 7 a audité une grande partie de l'API Cocoa Touch pour savoir comment elle expose les valeurs optionnelles - c'est-à-dire celles qui pourraient éventuellement être nulles. Il semble que le contrôleur d'impression partagé soit une telle valeur. L'ouverture de la version Swift de l'en-tête pour UIPrintInteractionController, je vois:

class func sharedPrintController() -> UIPrintInteractionController? 

Le type avec un point d'interrogation de fuite - UIPrintInteractionController? - indique que la valeur de retour de sharedPrintController() pourrait être une instance de UIPrintInteractionController ou il pourrait être nul.

Si vous êtes certain que, dans la situation que vous appelez cette méthode, il renvoie toujours une valeur non nulle, vous pouvez immédiatement forcer cette valeur en option à « déballer » dans une instance de UIPrintInteractionController:

var pic = UIPrintInteractionController.sharedPrintController()! 
// the rest of your code 

d'autre part, si vous pensez que vous pourriez jamais obtenir nulle à partir de cette méthode, vous pouvez utiliser en option liant syntaxe Swift pour vérifier ce cas et continuer à utiliser pic que si elle est non nulle:

if let pic = UIPrintInteractionController.sharedPrintController() { 
    // the rest of your code 
} 

De toute façon, Xcode vous dit que vous devez maintenant gérer le fait que le contrôleur d'impression partagé est exposé en tant que valeur facultative dans la version bêta 7.

+0

Cela a fait l'affaire! Merci beaucoup! –

Questions connexes