Ios 无法在应用内购买时从观察者方法中关闭视图

Ios 无法在应用内购买时从观察者方法中关闭视图,ios,in-app-purchase,Ios,In App Purchase,我有一个应用程序使用应用程序内购买。 单击主视图控制器中的按钮将加载第二个视图控制器,其中包含恢复购买、购买产品和取消。有一个委托协议来关闭视图。 当我clic cancel时,它可以正常工作,但是如果我在任何store observer方法中以编程方式设置了disclose,它就不工作了。通过NSNotification,它似乎起了作用,但我想知道它为什么不起作用。同时,尝试从那里更改按钮的alpha值也不起作用。 先谢谢你 Appdelegate.h #import <UIKit/UI

我有一个应用程序使用应用程序内购买。 单击主视图控制器中的按钮将加载第二个视图控制器,其中包含恢复购买、购买产品和取消。有一个委托协议来关闭视图。 当我clic cancel时,它可以正常工作,但是如果我在任何store observer方法中以编程方式设置了disclose,它就不工作了。通过NSNotification,它似乎起了作用,但我想知道它为什么不起作用。同时,尝试从那里更改按钮的alpha值也不起作用。 先谢谢你

Appdelegate.h

#import <UIKit/UIKit.h>
#import "StoreNavigationController.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic)  StoreNavigationController* observer;
@end
ViewController.h

#import <UIKit/UIKit.h>
#import "storeNavigationController.h"

@class completeView;
@interface ViewController : UIViewController <StoreNavigationControllerDelegate>
- (void)storeNavigationControllerDidFinish;
@end
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
#import "plistController.h"

@protocol StoreNavigationControllerDelegate <NSObject>
- (void)storeNavigationControllerDidFinish; //View dismisser
@end

@class StoreNavigationController;
@interface StoreNavigationController : UIViewController <SKPaymentTransactionObserver>
@property (strong, nonatomic) id <StoreNavigationControllerDelegate> delegate;
//User actions
- (IBAction)restoreItems:(UIButton *)sender;
- (IBAction)buyItem:(UIButton *)sender;
- (IBAction)cancelPurchase:(UIButton *)sender;

//Methods SKPaymentTransactionObserver 
- (void) completeTransaction:(SKPaymentTransaction *)transaction;
- (void) failedTransaction:  (SKPaymentTransaction *)transaction;
- (void) restoreTransaction: (SKPaymentTransaction *)transaction;
- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
@end
storeNavigationController.h

#import <UIKit/UIKit.h>
#import "storeNavigationController.h"

@class completeView;
@interface ViewController : UIViewController <StoreNavigationControllerDelegate>
- (void)storeNavigationControllerDidFinish;
@end
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
#import "plistController.h"

@protocol StoreNavigationControllerDelegate <NSObject>
- (void)storeNavigationControllerDidFinish; //View dismisser
@end

@class StoreNavigationController;
@interface StoreNavigationController : UIViewController <SKPaymentTransactionObserver>
@property (strong, nonatomic) id <StoreNavigationControllerDelegate> delegate;
//User actions
- (IBAction)restoreItems:(UIButton *)sender;
- (IBAction)buyItem:(UIButton *)sender;
- (IBAction)cancelPurchase:(UIButton *)sender;

//Methods SKPaymentTransactionObserver 
- (void) completeTransaction:(SKPaymentTransaction *)transaction;
- (void) failedTransaction:  (SKPaymentTransaction *)transaction;
- (void) restoreTransaction: (SKPaymentTransaction *)transaction;
- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
@end

代理应使用assign属性

 @property (assign, nonatomic) id <StoreNavigationControllerDelegate> delegate;
 @property (assign, nonatomic) id <StoreNavigationControllerDelegate> delegate;
NSLog(@"delegate: %@", self.delegate);