2012-12-28 11 views
5

Per default, i passaggi vengono caricati in PKAddPassesViewController. C'è un modo per sapere quale pulsante viene premuto sulla vista.Come verificare se il pulsante Annulla o aggiungi viene premuto in PKAddPassesViewController

//this method runs when user either click on the cancel or add button 

-(void)addPassesViewControllerDidFinish: (PKAddPassesViewController*) controller 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

voglio ottenere il titolo del pulsante che viene premuto in PKAddPassesViewController. Ho provato il codice qui sotto per accedere al titolo, ma sto ricevendo null.

NSLog(@"Title of button %@",controller.navigationController.navigationItem.rightBarButtonItem.title); 

risposta

5

Per quanto ne so non c'è, ma si può sempre cercare di recuperare il passo si è appena aggiunto con:

- (PKPass *)passWithPassTypeIdentifier:(NSString *)identifierserialNumber:(NSString *)serialNumber; 

Ciò restituirà il passaggio se è stato aggiunto e nil in caso contrario, questo potrebbe aiutare a dedurre se è stata aggiunta o meno una nuova passata.

Nota che oltre all'aggiunta, il pulsante destro potrebbe visualizzare "Aggiorna" (se il pass è già presente ma la tua versione ha nuovi dati), oppure essere disattivato se stai tentando di aggiungere nuovamente un pass duplicato.

+0

Vergogna su Apple! –

3

Ho utilizzato un altro approccio per risolvere il problema precedente. Sto confrontando il no. di pass già presenti nel passbook con il nuovo conteggio passaggi dopo che l'utente ha fatto clic sul pulsante aggiungi o annulla. Se il conteggio passaggi aumenta significa che il pass è stato aggiunto al passbook altrimenti no.

- (vuoto) addPassesViewControllerDidFinish: (PKAddPassesViewController *) controllore {

PKPassLibrary* passLib = [[PKPassLibrary alloc] init]; 


NSArray * passArray = [passLib passes]; 

int currentPasses=[passArray count]; 

// Qui prevPasses sono passaggi già presenti nella Passbook.You può inizializzarlo in - // metodo (vuoto) viewDidLoad

if(currentPasses>prevPasses) 
{ 
NSLog(@"Pass Has Been successfully Added");  
} 

else 
{ 

NSLog(@"Cancel Button Clicked"); 

} 

}

// ma in caso di aggiornamento lo stesso passo, conteggio passaggio non aumenta con conseguente all'esecuzione di Els e parte // se stai premendo il pulsante cancel o upgrade. Quindi devi fornire un po 'di logica in più per // rintracciarlo.

2

provare questo,

-(void) addPassesViewControllerDidFinish:(PKAddPassesViewController *)controller { 

    if (self.HKPass) { 
     PKPassLibrary *pkLibrary = [[PKPassLibrary alloc] init]; 
     if ([pkLibrary containsPass:self.HKPass]) 
       // add or update clicked 
     else 
      // Cancel Clicked 

    } 
    [controller dismissModalViewControllerAnimated:YES]; 

} 

Grazie

Problemi correlati