今天写代码,遇到了一个bug,
整个项目主控制器为tabBarController,项目的需求是这样的:
在第一个页面上进行一定的操作,跳到外部浏览器,进行数据的处理!数据处理完了,发一个通知,调到第三个页面下的一个子页面中去!
刚开始在接受控制器写在了ViewDidLoad中,但是这种写法,我们首次进行跳转的时候接受不到我们代理发送的通知,
后面百度了下,也没有合适的方法,
最后我尝试着写,把接收通知写到了init方法中,后面首次也能接收到通知了!
贴上我们的代码
- (instancetype)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stepToGCJL) name:goucaijilu object:nil]; //跳转购彩记录
}
return self;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
NSString *str=[NSString stringWithFormat:@"%@",url];
NSArray *strArry=[str componentsSeparatedByString:@":"];
NSString *str1=[strArry objectAtIndex:0];
if ([str1 isEqualToString:@"@@"]) { //跳转到购彩记录里面
tabBarCtl.selectedIndex=4;
[[NSNotificationCenter defaultCenter]postNotificationName:goucaijilu object:nil];
}else if([str1 isEqualToString:@"@@@@@"])
{
//如果极简SDK不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给SDK 在跳转的pay方法里面接收
[[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
}];
}
return YES;
}
在此记录,用于以后的阅读!!
要是有更好的方法,大家可以讨论讨论哈!!