如何检查PKAddPassesViewController中是否按下了取消或添加按钮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查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);
据我所知,没有,但你总是可以尝试检索你刚刚添加的通行证:
- (PKPass *)passWithPassTypeIdentifier:(NSString *)identifierserialNumber:(NSString *)serialNumber;
如果没有,这将返回通行证,否则返回零 - 这可以帮助推断是否添加了新通行证。
请注意,除了添加之外,右键可以显示“更新”(如果传递已存在但您的版本有新数据),或者如果您尝试重新添加重复传递则禁用。
我用另一种方法来解决上述问题。我在比较没有。用户点击添加或取消按钮后,存折中已存在的传递已经存在新传递计数。如果传递计数增加,则意味着传递已添加到存折,否则不会。
- (void)addPassesViewControllerDidFinish:(PKAddPassesViewController *)controller {
PKPassLibrary* passLib = [[PKPassLibrary alloc] init];
NSArray * passArray = [passLib passes];
int currentPasses=[passArray count];
//这里prevPasses是Passbook中已经存在的传递。你可以在 - //(void)viewDidLoad方法中初始化它
if(currentPasses>prevPasses)
{
NSLog(@"Pass Has Been successfully Added");
}
else
{
NSLog(@"Cancel Button Clicked");
}
}
//但是在更新相同传递的情况下,传递计数不会增加导致执行else部分//是否要点击取消或升级按钮。所以你需要提供一些额外的逻辑来//跟踪它。
试试这个 ,
-(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];
}
谢谢
Swift.4版本的Karthikeyan's回答。
不要忘记为PKAddPassesViewController设置委托。
func addPassesViewControllerDidFinish(_ controller: PKAddPassesViewController) {
let passLib = PKPassLibrary()
// Get your pass
guard let pass = self.pass else { return }
if passLib.containsPass(pass) {
// Add button pressed
// Show alert message for example
let alertController = UIAlertController(title: "", message: "Successfully added to Wallet", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
controller.dismiss(animated: true, completion: nil)
}))
controller.show(alertController, sender: nil)
} else {
// Cancel button pressed
controller.dismiss(animated: true, completion: nil)
}
}
以上是关于如何检查PKAddPassesViewController中是否按下了取消或添加按钮的主要内容,如果未能解决你的问题,请参考以下文章