所有视图的共享 UIWebView

Posted

技术标签:

【中文标题】所有视图的共享 UIWebView【英文标题】:shared UIWebView for all views 【发布时间】:2011-03-07 21:42:21 【问题描述】:

我想将 UIWebView 添加到应用程序中的所有视图。我没有加载和可见的 web 视图。有人可以帮助我吗?

为了让它工作,我创建了一个共享 Web 视图类。

//.h Implementation
@interface WebViewAdds : UIWebView 



+ (WebViewAdds *) sharedWebView ;
@end


WebViewAdds *g_sharedWebView ;

@implementation WebViewAdds

+(WebViewAdds *) sharedWebView  

    if (g_sharedWebView == nil) 

        g_sharedWebView = [[WebViewAdds alloc] initWithFrame:CGRectMake(0, 400, 320, 60)];

        [g_sharedWebView setDelegate:self];

        NSString *urlAddress = @"http://www.google.com";
        NSURL *url = [NSURL URLWithString:urlAddress];

        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

        [g_sharedWebView loadRequest:requestObj];
    

    return g_sharedWebView;


- (id)initWithFrame:(CGRect)frame 

    self = [super initWithFrame:frame];
    if (self) 
        // Initialization code.
    
    return self;




- (void)dealloc 
    [super dealloc];


@end

在所有的视图控制器中,我调用的都是一样的

-(UIWebView *) testWebView 

    return [WebViewAdds sharedWebView] ;


-(void) viewDidLoad 
    [super viewDidLoad];
    [self.view addSubview:self.testWebView];   

【问题讨论】:

[g_sharedWebView setDelegate:self];除非您确实实现了委托方法,否则看起来没有必要。 【参考方案1】:

我发现有两个问题。

首先是你并没有真正正确地做一个单例。 This SO question 里面有一些很好的信息。

第二个问题是您有一个 UIWebView 的子类,并且您将其委托设置为自身。理想情况下,委托是一个提供额外行为的单独类。

【讨论】:

以上是关于所有视图的共享 UIWebView的主要内容,如果未能解决你的问题,请参考以下文章

MFC 在应用程序的所有视图上共享一个静态标签

创建一个 Drupal 视图,加载共享任何一个分类术语的所有文章(上下文过滤器)

跨多个视图控制器共享背景图像

使用 Core Data 在多个视图控制器之间共享数据

Laravel视图共享数据

你还没掌握超表「视图」, 难怪觉得数据繁杂得要命!