2014-01-08 4 views
-1

Я использую следующий код для определенной кнопки в UIView. Не забывайте, что этот код отлично работает в UITableView, но, похоже, не работает для меня в UIViewController. При нажатии на кнопку она просто висит методПроблема с UIButton в UIViewController вместо UITableView

UIButton *buyButton = [[UIButton alloc] initWithFrame:CGRectMake(-1, 370, 320, 60)]; 
     UIImage *btnImage = [UIImage imageNamed:@"upgrade-new.png"]; 
     [buyButton setImage:btnImage forState:UIControlStateNormal]; 
     [buyButton.titleLabel setFont:[UIFont boldSystemFontOfSize:13.0]]; 
     [buyButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [buyButton.titleLabel setShadowColor:[UIColor colorWithWhite:0.1 alpha:1.0]]; 
     [buyButton.titleLabel setShadowOffset:CGSizeMake(0, -1)]; 
     [buyButton addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
     buyButton.tag = 0; 
     [[self view] addSubview:buyButton]; 

для кнопки

- (void)buyButtonTapped:(id)sender { 

    UIButton *buyButton = (UIButton *)sender; 
    SKProduct *product = [_products objectAtIndex:buyButton.tag]; 

    NSLog(@"Buying %@...", product.productIdentifier); 
    [[RageIAPHelper sharedInstance] buyProduct:product]; 

} 

я оценил бы некоторые рекомендации по этому вопросу!

+0

Имеет ли ваш целевой метод вообще называется? – Eric

+0

Да, это вызвано через общий экземпляр – Omar

+0

Код, который здесь выглядит отлично, если предположить, что весь код, окружающий его, хорош. Ваш код превращается в функцию buyButtonTapped? Действительно ли продукты содержат объекты? – Eagle11

ответ

0

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

https://stackoverflow.com/a/14175601/1141395

Для меня это выглядит как это не будет работать, потому что вы должны получить доступные продукты, которые вы уже добавили в ITunesConnect. Вы можете нажать ваш UIButton, чтобы этот процесс начался, но продукты должны быть получены в следующих delegate метода:

-(void)productsRequest:(SKProductsRequest *)request 
    didReceiveResponse:(SKProductsResponse *)response 
0

Причина, почему он работал раньше, скорее всего, из-за вас обработку вашего _products массива хорошо, когда вы были ваши tableViews ,

Теперь, когда вы изменили это вокруг, то есть вероятность, что что-то сломала с _products массива в то время как вы пытаетесь реализовать кнопку в вашем UIViewController

Он висит, потому что либо сбой приложения или из-за вашего RageIAPHelper экземпляра не ожидал нулевого объекта.

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

Смежные вопросы