Как проверить, нажата ли кнопка отмены или добавления в 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
nl ja de

3 ответы

Насколько мне известно, нет, но вы всегда можете попробовать и получить тот пропуск, который вы только что добавили:

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

Это вернет пропуск, если он был добавлен, а nil, если нет, - это может помочь определить, был ли добавлен новый проход.

Обратите внимание, что при добавлении правой кнопки может отображаться «Обновить» (если пропуск уже присутствует, но ваша версия имеет новые данные) или быть отключена, если вы пытаетесь повторно добавить дубликат.

5
добавлено
Позор на Apple!
добавлено автор Islam Q., источник

Я использовал другой подход для решения вышеуказанной проблемы. Я сравниваю нет. пропусков, уже присутствующих в сберегательной книжке с новым количеством счетчиков после того, как пользователь либо нажал кнопку добавления, либо отменить. Если количество счетчиков увеличивается это означает, что пропуск был добавлен в сберегательную книжку, иначе нет.

- (void) addPassesViewControllerDidFinish: (PKAddPassesViewController *) контроллер {

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//если вы нажимаете кнопку отмены или обновления. Поэтому вам нужно предоставить дополнительную логику для//отслеживания.

3
добавлено

попробуй это ,

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

}

благодаря

2
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.