【问题标题】:Objective-C on OS X : setting an outlet programmaticallyOS X 上的 Objective-C:以编程方式设置插座
【发布时间】:2014-04-01 08:03:53
【问题描述】:

我正在创建一个应用程序,它使用 WebView 从 Web 加载内容,但 WebView 没有显示给用户,我想知道页面何时完成加载,为此,我将使用 didFinishLoadForFrame 但要让这件事工作I saw that

您需要将您的 webView 对象的 outlet frameLoadDelegate 设置为 类,其中包含一个方法 webView:didFinishLoadForFrame:

我的问题是,如果不使用 Interface Builder,我不知道该怎么做……我应该写什么代码,应该在哪里写?

这里是 AppDelegate.h 的内容

#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet WebView *myWeb;
@end  

这里是 AppDelegate.m 的内容

#import "AppDelegate.h"


@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[self.myWeb mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}


- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    NSLog(@"La page a été chargée !");
}

@end  

谢谢

【问题讨论】:

  • 顺便说一句,我是 Objective-C 编程的新手...

标签: objective-c macos webview osx-mavericks


【解决方案1】:

这不是一个出口,它只是一个标准的Objective-C属性:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    self.myWeb.frameLoadDelegate = self;   
    [[self.myWeb mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}

然而,这不太可能出现在应用程序委托中,但这有点超出了您的问题范围。

【讨论】:

  • 非常感谢!为什么不应该在应用程序委托中? (我是 Objective-C 编程的新手!)。我不知道您是否可以帮助我或者我是否应该打开一个新线程,但我遇到了另一个问题:如果我不将 UI 元素链接到 @property(弱) IBOutlet WebView *monWeb;你知道为什么吗?
  • @TrevörAnneDenise 是的,我知道为什么,另一个答案(来自 NeverHopeless)暗示了为什么会这样。简单地声明一个指向对象的指针实际上不会创建该对象。它要么需要从 NIB 序列化(使用 Interface Builder),要么您需要以编程方式创建它。这是一个超出您原始问题范围的基本问题,因此您可能应该花一些时间来研究它。
【解决方案2】:

对于以编程方式,您需要初始化您的 UIWebView 及其在 applicationDidFinishLaunching 中的代表:

    [self.myWeb =[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     self.myWeb.frameLoadDelegate =s elf; 
    [self.view addSubview:self.myWeb];

#if ARC
    [self.myWeb release];
#endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多