加载 webview 时,SplitViewController 应用程序崩溃

Posted

技术标签:

【中文标题】加载 webview 时,SplitViewController 应用程序崩溃【英文标题】:SplitViewController app crashes when loading webview 【发布时间】:2012-05-02 18:02:30 【问题描述】:

我正在开发一个使用 splitViewController 从 sqlite 数据库加载 html 文件的应用程序。我有一个做同样事情的 iPhone 应用程序。它加载一个包含数据库内容的表格视图,然后当用户触摸一个单元格时将一个 web 视图推送到堆栈上。一切都适用于 iPhone 应用程序,但不适用于带有 splitViewController 的 iPad。一切正常,除了加载 webview 时。

头文件中的相关代码如下:

    #import <UIKit/UIKit.h>

  @class LIDetailViewController;

  @interface LIMasterViewController : UITableViewController <UISearchBarDelegate>

  @property (strong, nonatomic) LIDetailViewController *detailViewController;

并且在实现文件中:

@synthesize detailViewController = _detailViewController;

这是崩溃的代码:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    if (!_detailViewController) 
        _detailViewController = [[LIDetailViewController alloc] initWithNibName:@"LIDetailViewController" bundle:nil];
    
    [self.navigationController pushViewController:self.detailViewController  animated:YES];



NSString *sqlData = [animal  description];
NSString *htmlHead = @"<head><link type='text/css' rel='stylesheet' href='default.css'><head/><body><div class='content'>";
NSString *htmlBody = [sqlData stringByAppendingString:@"</div>"];   
NSString *html = [htmlHead stringByAppendingString:htmlBody];
[_detailViewController.animalDescripton loadHTMLString:html baseURL:nil];

它正在崩溃,上面写着:

[_detailViewController.animalDescripton loadHTMLString:html baseURL:nil];

这是调试器中的错误:“[UINavigationController animalDescripton]: unrecognized selector sent to instance 0x685fa70”

如果有人可以帮助我,那就太好了!提前致谢。

【问题讨论】:

每当我使用UIWebView 时,我都会传入baseURL:nil。您传递mainBundle 是否有原因?您在 NSString 中提供了整个 HTML,对吧? 这是一个很好的观点,似乎效果很好。那是我从别人那里借来的一段代码……谢谢你的提示。这似乎并不能解决问题,但无论如何都很好。知道为什么我会在该代码上崩溃吗?? 你得到什么错误?另外,我假设animalDescription ,实际上是UIWebView,对吗? (覆盖所有基地...) 这是调试器中的错误。是的,animalDescription 是一个 UIWebview。 [UINavigationController animalDescripton]:无法识别的选择器发送到实例 0x685fa70 出于某种原因,编译器不知道_detailViewController 不仅仅是一个普通的 UINavigationController。你如何为 iPad 实例化它?到目前为止,您只显示了 iPhone 代码... 【参考方案1】:

您显然从未在 iPad 上设置 self.detailViewController,因此它似乎默认为 UINavigationController

【讨论】:

这是问题的一部分。另一部分是我未能正确设置应用程序委托。感谢您的帮助。

以上是关于加载 webview 时,SplitViewController 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

加载新的WebView时,防止当前的WebView消失

webview加载时如何隐藏progressview

加载 webview 时,带有大标题的导航栏会缩小

在 webView 上加载本地存储的文件时延迟

再次恢复应用程序时如何不重新加载webview?

重新加载 webview 时 EasyJSWebView 中断