iOS返回到父视图控制器
我正在使用payal iOS SDK,我想使用以下命令返回函数sendCompletedPaymentToServer中的父视图控制器:iOS返回到父视图控制器,ios,objective-c,paypal,Ios,Objective C,Paypal,我正在使用payal iOS SDK,我想使用以下命令返回函数sendCompletedPaymentToServer中的父视图控制器: [self.navigationController popViewControllerAnimated:YES] 以及: 应用程序崩溃了。 ParentViewcontroller可以不同 它发生在我第二次点击支付按钮时。 错误日志: 2016-03-07 11:49:52.212 Ova[7169:2862312]开始/结束外观转换的不平衡呼叫。 201
[self.navigationController popViewControllerAnimated:YES]
以及:
应用程序崩溃了。
ParentViewcontroller可以不同
它发生在我第二次点击支付按钮时。
错误日志:
2016-03-07 11:49:52.212 Ova[7169:2862312]开始/结束外观转换的不平衡呼叫。
2016-03-07 11:50:02.525 Ova[7169:2862312]*由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*-[\uu NSArray0 objectAtIndex:]:索引0超出空NSArray的界限”
***第一次抛出调用堆栈:
(0x184915900 0x183f83f80 0x184891478 0x100145268 0x10014494c 0x100144ba4 0x10011a200 0x100116a9c 0x10010aafc 0x100150200 0x1010cdbf0 0x1010CD658 0x1848ccbb0 0x1848caa18 0x1847f9680 0x185d08088 0x189670d90 0x100006EC28 0x18439a8b8)
libc++abi.dylib:以NSException类型的未捕获异常终止
[self.navigationController popViewControllerAnimated:YES];
这将使您回到查看控制器。如果要导航回上一个视图控制器,应实现:
[self.navigationController popToRootViewControllerAnimated:YES];
通过添加BOOL变量来测试支付是否成功来解决此问题。在视图中,我将使用:
[self.navigationController popViewControllerAnimated:YES];
谢谢大家。在集成PayU网关时,我们也遇到了同样的问题。
我建议您使用协议委托方法来显示视图控制器,您将在其web视图中加载Payal。
让第二视图控制器是您正在加载Payal的控制器,第一视图控制器显示第二视图控制器。
1.在第二视图中,控制器声明将关闭第二视图控制器的协议
@protocol DismissPayalDelegate <NSObject>
@required
-(void)dismissPayal:(id)viewcontroller;
@end
@interface secondviewcontroller : UIViewController
@property(strong, nonatomic) id < DismissPayalDelegate > delegate;
@end
它将关闭PerformsgueWithIdentifier方法中显示的第二个视图控制器的实例。使用此逻辑,我希望它能帮助您很多。我得到了这样一个结果:对myViewController开始/结束外观转换的调用不平衡,什么都没有发生。当我再次点击支付时,应用程序崩溃。将代码移动到ViewDidDisplay,警告应该消失。viewDidLoad的问题在于UINavigationController尚未完成其动画。因此,当模态的动画发生时,导航控制器的动画仍在发生。我使用Paypal SDK,我想在Paypal支付成功后返回parentViewController。当我使用[self DismissViewControllerInitiated:YES completion:nil]时它返回到我的第一个ViewController,而不是父视图控制器。您可以添加崩溃日志数据吗。?从
异常中看起来您正在尝试访问nil数组索引
。是的,因为付款后所有对象都从数组中删除,应该返回到父视图控制器。好的,我将尝试。我认为这比我的解决方案好。谢谢
@protocol DismissPayalDelegate <NSObject>
@required
-(void)dismissPayal:(id)viewcontroller;
@end
@interface secondviewcontroller : UIViewController
@property(strong, nonatomic) id < DismissPayalDelegate > delegate;
@end
[delegate dismissPayal:self];<br><br>