的iOS回到父视图控制器

问题描述:

我使用的iOS PAYAL SDK,我想回去父视图控制器在功能sendCompletedPaymentToServer使用:的iOS回到父视图控制器

[self.navigationController popViewControllerAnimated:YES] 

和:

[self dismissViewControllerAnimated:YES completion:nil] 

应用坠毁。 ParentViewcontroller可以不同。

它发生在我第二次点击工资按钮时。 错误日志:

2016-03-07 11:49:52.212 Ova [7169:2862312]对于开始/结束外观转换的不平衡调用。 2016-03-07 11:50:02.525 Ova [7169:2862312] *因未捕获异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArray0 objectAtIndex:]:索引0超出空NSArray的界限' ***第一掷调用堆栈: (0x184915900 0x183f83f80 0x184891478 0x100145268 0x10014494c 0x100144ba4 0x10011a200 0x100116a9c 0x10010aafc 0x100150200 0x1010cdbf0 0x1010cdbb0 0x1010d3658 0x1848ccbb0 0x1848caa18 0x1847f9680 0x185d08088 0x189670d90 0x10006ec28 0x18439a8b8) 的libC++ abi.dylib:与类型的未捕获的异常终止NSException

+0

请问您可以添加崩溃日志数据。 –

+0

从'exception'看起来你正试图访问nil'Array index'。 –

+0

支付后是所有对象从数组中删除,并应回到父视图控制器。 – Rockers23

您正在使用:

[self.navigationController popViewControllerAnimated:YES]; 

这会使您回到视图控制器。如果你想导航回到先前的视图控制器,你应该执行:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

我得到这个:不平衡的调用myViewController开始/结束外观转换,并没有发生。当我点击再次支付应用程序崩溃。 – Rockers23

+0

将您的代码移到viewDidAppear中,警告应该消失。 viewDidLoad的问题在于UINavigationController尚未完成其动画。所以,当模态的动画发生时,导航控制器的动画仍然在发生。 –

+0

我的代码进入sendCompletedPaymentToServer方法。我使用Paypal SDK,我想在paypal付款后返回到parentViewController。当我使用[self dismissViewControllerAnimated:YES completion:nil]它回到我的第一个ViewController而不是父级。 – Rockers23

通过添加BOOL变量来测试付款是否成功。并进入viewWillAppear我使用:

[self.navigationController popViewControllerAnimated:YES]; 

谢谢大家。

我们在整合PayU网关时也有同样的问题。

我建议您使用协议委托方法来呈现您在其Web视图中加载Payal的视图控制器。

让第二个视图控制器是您正在加载Payal和第一个视图控制器呈现第二个视图控制器。

1.在第二视图控制器宣告协议将驳回secondviewcontroller.m文件secondviewcontroller

@protocol DismissPayalDelegate <NSObject> 
@required 
    -(void)dismissPayal:(id)viewcontroller; 
@end 

@interface secondviewcontroller : UIViewController 
    @property(strong, nonatomic) id <DismissPayalDelegate> delegate; 
@end 


合成委托对象。

在第一个视图控制器中,如果使用performSegeuWithIdentifier(呈现第二个vc即Payal),则使用getviewviewController的实例,即secondviewcontroller。
设置destinationviewcontrollerInstance.delegate = self;

在secondViewController的成功/失败的方法写入代码以关闭视图控制器

[delegate dismissPayal:self];<br><br> 

它将解散第二视图控制器的实例在performSegueWithIdentifier方法

使用此逻辑呈现,我希望它能帮助你很多。

+0

好吧,我会尝试。我认为这比我的解决方案好。谢谢 – Rockers23

+0

如有任何问题,请告知我。 –