【问题标题】:WebView outlet mysteriously not available in XIBWebView 出口在 XIB 中神秘地不可用
【发布时间】:2012-04-08 02:03:58
【问题描述】:

只是想制作一个简单的 WebView Mac 应用。

我已经导入了 WebKit.h,声明了一个 WebView @property,并在 .m 中对其进行了@synthesized,但是当我进入 IB 和连接选项卡时,我的出口,比如 MyWebView,并没有列出。

.h

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

@interface MyAppDelegate : NSObject <NSApplicationDelegate> {
     NSWindow *window;
     IBOutlet WebView *MyView;
 }
 @property (assign) IBOutlet NSWindow *window;
 @property (nonatomic, retain) IBOutlet WebView *MyView;
@end

.m

 @synthesize MyView;

最新版本的 Xcode。想法?

【问题讨论】:

  • 您是否正确检查了插座?引导我们完成它(或者截图可能会很好)
  • 检查插座是什么意思?我正在 IB 中查看我的 XIB 文件,位于 Connections Inspector 选项卡 > Outlets...
  • 好的,我想通了...我正在查看 WebView 的连接检查器,而不是 AppDelegate。呃。但是,当启动时,它仍然是空白的(即使现在 WebView 已连接到 IBOutlet)......在 applicationDidFinishLaunching: 中使用相同的代码:正如我之前发布的......该代码看起来不错吗?为什么我在运行应用程序时仍然出现空白屏幕?
  • 其实我之前好像没发过...- (void)awakeFromNib { NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; NSString *htmlPath = [resourcesPath stringByAppendingString:@"/htdocs/index.html"]; [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; }

标签: objective-c xcode cocoa webkit webview


【解决方案1】:

确保定义如下:

@property(nonatomic, retain) IBOutlet UIWebView *myWebView;

如果您没有添加 IBOutlet,则 IB 不会这样显示。

【讨论】:

  • .h #import #import @ interface MyAppDelegate : NSObject { NSWindow *window; IBOutlet WebView *MyView; @property (assign) IBOutlet NSWindow *window; @property (nonatomic, retain) IBOutlet WebView *MyView; @end .m @synthesize MyView; ...这就是为什么我把头撞在墙上的原因。应该这样做,不是吗?然而,没有出现在我的网点 i IB...
  • Outlets 不进入 Application Delegate。它们最常出现在 View Controller 类中,并且 VC 与 IB nib 相关联。您使用的是故事板还是 Nib 文件?
  • 我的回答假设是 iOS。我不知道在 AppDelegate 中放置插座的规则有多大变化。我认为这在任何一个平台上都不好,但我不能肯定。
  • 这是我开始的教程:lostdecadegames.com/…
  • 您发布的代码没有任何问题——我将它复制到一个项目中,并且出口确实出现在 IB 中。在应用程序委托中放置插座也很好(可可项目的默认模板将主窗口的插座放在应用程序委托中)。我无法解释为什么它对你不起作用,除非你在项目设置中做了一些你没有提到的事情。 “连接标签”是什么意思?
【解决方案2】:

在仔细查看了您发布的代码之后,我认为问题与您的应用委托的名称有关——您如何(以及为什么?)将其从默认的 AppDelegate 更改? IB 中的蓝色立方体是名为 AppDelegate 还是名为 MyAppDelegate?如果是前者,那就是你的问题——在 IB 的 Identity Inspector 中将其类更改为 MyAppDelegate。

【讨论】:

  • 我有点困惑......你看不到它是如何或为什么被改变的比那个?
  • rdelmar 的意思是 AppDelegate 的类名永远不应该改变。这是用户(你)会做的事情。
  • 您使用的是什么版本的 Xcode?在 Xcode 4 中,模板始终将其命名为 AppDelegate。无论如何,重要的事实是,文件的名称与 IB 中蓝色立方体的名称相同。窗口的默认出口是否显示?
【解决方案3】:

在我原来的问题上查看我的 cmets。我的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多