我正在使用payal iOS SDK,我希望使用以下函数返回到sendCompletedPaymentToServer函数中的父视图控制器:
[self.navigationController popViewControllerAnimated:YES]
和:
[self dismissViewControllerAnimated:YES completion:nil]
app崩溃了。 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)
您正在使用:
[self.navigationController popViewControllerAnimated:YES];
这将带您回到查看控制器。如果要导航回以前的视图控制器,则应实现:
[self.navigationController popToRootViewControllerAnimated:YES];
答案 1 :(得分:0)
通过添加BOOL变量解决,以测试付款是否成功。并进入viewWillAppear我使用:
tuple_out = [('bread', '$1.90'),
('bread', '$1.95'),
('chips', '$2.54'),
('milk', '$2.31'),
('milk', '$2.38')]
dic = {}
for key, val in tuple_out:
if key in dic:
dic[key] += float(val.replace("$",""))
else:
dic[key] = float(val.replace("$",""))
感谢所有人。
答案 2 :(得分:0)
我们在集成PayU网关时也遇到了同样的问题。
我建议您使用协议代理方法来显示您在其Web视图中加载Payal的视图控制器。
让第二个视图控制器是你正在加载Payal的那个,第一个视图控制器正在显示第二个视图控制器。
1.在第二个视图中,控制器声明将解除secondviewcontroller的协议
@protocol DismissPayalDelegate <NSObject>
@required
-(void)dismissPayal:(id)viewcontroller;
@end
@interface secondviewcontroller : UIViewController
@property(strong, nonatomic) id < DismissPayalDelegate > delegate;
@end
在secondviewcontroller.m文件中合成委托对象。
在第一个视图控制器中,如果你正在使用performSegeuWithIdentifier(提交第二个vc,即Payal),那么使用getview实例的destinationviewController即secondviewcontroller 。
设置destinationviewcontrollerInstance.delegate = self;
在secondViewController的成功/失败方法中编写代码以解除视图控制器
[delegate dismissPayal:self];<br><br>
它将解除在performSegueWithIdentifier方法中呈现的第二个视图控制器的实例
使用此逻辑,我希望它能为您提供很多帮助。