2016-03-07 104 views
0

我使用的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

回答

0

您正在使用:

[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

0

通過添加BOOL變量來測試付款是否成功。並進入viewWillAppear我使用:

[self.navigationController popViewControllerAnimated:YES]; 

謝謝大家。

0

我們在整合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

如有任何問題,請告知我。 –

相關問題