2012-12-28 10 views
5

'da iptal veya ekleme düğmesinin basılıp basılmadığı nasıl denetlenir? Varsayılan olarak PKAddPassesViewController numaralı geçişler yüklenir. Görünümde hangi tuşa basıldığını bilmenin bir yolu var mı?PKAddPassesViewController

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

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

ben PKAddPassesViewController yılında basıldığında düğmenin başlığını almak istiyorum. Başlığa erişmek için aşağıdaki kodu denedim ancak null alıyorum.

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

cevap

5

Bildiğim kadarıyla farkındayım olarak yoktur, ama her zaman denemek ve pas almak sadece eklenmiş olabilir: eklenmeli ve nil eğer bu geçiş dönecektir

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

eğer değilse - bu yeni bir geçişin eklenip eklenmediğine karar verebilir.

Eklemenin yanı sıra, sağ düğme 'Güncelle' (geçiş zaten varsa, ancak sürümünüzün yeni verisi varsa) görüntüleniyor olabilir veya yinelenen geçişi yeniden eklemeye çalışıyorsanız devre dışı bırakılabilir.

+0

Ayıp! –

3

Yukarıdaki sorunu çözmek için başka bir yaklaşım kullandım. Hayır ile karşılaştırıyorum. kullanıcı, ya ekleme ya da iptal düğmesine tıkladıktan sonra yeni geçiş sayısı ile birlikte hesap cüzdanında mevcut olan geçişlerin sayısıdır. Geçiş sayısı değerini artırırsa, bu, başka bir şekilde, hesap defterine geçişin eklenmesi anlamına gelir.

- (void) addPassesViewControllerDidFinish: - // (void) viewDidLoad yöntemi

(PKAddPassesViewController *) kumanda {

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


NSArray * passArray = [passLib passes]; 

int currentPasses=[passArray count]; 

// Burada prevPasses içinde ilklendirebilirsiniz Passbook.You zaten mevcut geçer olan

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

else 
{ 

NSLog(@"Cancel Button Clicked"); 

} 

}

// Fakat aynı geçiş güncellenmesi durumunda, geçiş sayımı els yürütülmesi sonuçlanan artmaz e bölümü // iptal ya da yükseltme düğmesine isabet edip etmediğinize bakın. // izleme için ekstra bir mantık sağlamanız gerekir.

2

bu deneyin

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

} 

Teşekkür Apple