2012-12-28 80 views
5

默认情况下,传递已加载到PKAddPassesViewController中。有什么方法可以知道视图上按下哪个按钮。如何检查PKAddPassesViewController中是否按下取消按钮或添加按钮

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

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

我想获得在PKAddPassesViewController中按下的按钮的标题。我已经尝试了下面的代码来访问标题,但我得到null

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

回答

5

据我所知没有,但你总是可以尝试和检索通你刚才添加了:

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

这将返回通,如果它加入和零如果没有 - 这可能有助于推断是否添加了新通行证。

请注意,除了添加外,右键可能会显示'更新'(如果通过已经存在但您的版本有新数据),或者如果您试图重新添加重复通行证,则会被禁用。

+0

可耻的苹果! –

3

我已经使用另一种方法来解决上述问题。 我比较没有。在用户点击添加或取消按钮后,新的通行证已经存在于存折中。如果通过计数增加 这意味着通过已被添加到存折,否则不存在。

- (无效)addPassesViewControllerDidFinish:(PKAddPassesViewController *)控制器 {

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


NSArray * passArray = [passLib passes]; 

int currentPasses=[passArray count]; 

//这里prevPasses是通行证已经存在于Passbook.You可以在初始化它 - //(无效)viewDidLoad方法

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

else 
{ 

NSLog(@"Cancel Button Clicked"); 

} 

}

//但在更新同一通的情况下,通过计数不增加导致ELS的执行e部分//您是否正在点击取消或升级按钮。所以您需要提供一些额外的逻辑来跟踪它。

2

试试这个,

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

} 

感谢

相关问题