如何检查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中是否按下了取消或添加按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何检查元素是不是没有特定的类?

如何进行PYTHON语法检查

单击然后检查时如何设置字体真棒检查图标[关闭]

如何编写Windows安全检查脚本

如何检查网络关闭

如何检查 XmlAttributeCollection 中是不是存在属性?