iOS返回到父视图控制器

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

我正在使用payal iOS SDK,我想使用以下命令返回函数sendCompletedPaymentToServer中的父视图控制器:

[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>