好吧,不知道如果這會幫助你,但在我的應用程序中,我已經設法顯示一個UIAlertView
用戶解釋崩潰,異常類型,其描述和堆棧跟蹤(全部使用NSSetUncaughtExceptionHandler
方法),像這樣:
然後我提供的查殺程序或繼續儘管該應用程序可能是不穩定的推薦選項。在我的情況下,它部分影響了應用程序的功能,所以在大多數情況下,用戶可以保存它的工作並安全地關閉應用程序。
如果你想我可以編輯答案並在這裏發佈代碼(我將不得不搜索我的Xcode項目文件夾,這就是爲什麼我沒有發佈它)。
編輯:
在AppDelegate中委託的方法willFinishLaunchingWithOptions
我設置NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
然後在我創建的處理方法如下:
static void uncaughtExceptionHandler(NSException *exception)
{
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"kDisculpe", nil) message:[NSString stringWithFormat:@"%@ %@%@ %@%@ %@", NSLocalizedString(@"kErrorText", nil), [exception name], NSLocalizedString(@"kErrorDescripcion", nil), [exception reason], NSLocalizedString(@"kErrorTrazaPila", nil), [exception callStackReturnAddresses]] delegate:[[UIApplication sharedApplication] delegate] cancelButtonTitle:NSLocalizedString(@"kContinuar", nil) otherButtonTitles:NSLocalizedString(@"kSalir", nil), nil] show];
[[NSRunLoop currentRunLoop] run];
}
然後在AlertView的委託方法clickedButtonAtIndex
我設置:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([[alertView title] isEqualToString:NSLocalizedString(@"kDisculpe", nil)]) {
switch (buttonIndex) {
case 0:
if ([[alertView title] isEqualToString:NSLocalizedString(@"kDisculpe", nil)]) {
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"kAdvertencia", nil) message:NSLocalizedString(@"kAppContinuaraInestable", nil) delegate:[[UIApplication sharedApplication] delegate] cancelButtonTitle:NSLocalizedString(@"kContinuar", nil) otherButtonTitles:nil] show];
}
break;
case 1:
exit(0);
break;
}
}
}
請注意,我所做的唯一重要的事情是[[NSRunLoop currentRunLoop] run];
我希望這會對您有所幫助。
粘貼你的錯誤日誌 – Anil 2013-05-03 12:23:33
重複的問題,下次在發佈問題之前使用搜索:http://stackoverflow.com/questions/1787254/showing-an-alert-in-an-iphone-top-level-異常處理程序 – 2013-05-03 13:07:51