如何调用-(IBAction)

How call in -(IBAction)

我是 objective-c 的新人。 需要制作一个按钮 link,它将在新的 window 中打开。为此,我需要执行 IBAction 来创建一个新的 window。 这添加 WebView :

- (ERBrowser *)addWebView:(NSURL *)url{
    for (NSView *view in browserViews)
        [view setHidden:true];
    ERTabModel *newModel = [[ERTabModel alloc] init];
    NSTabViewItem *newItem = [[NSTabViewItem alloc] initWithIdentifier:newModel];
    [tabView addTabViewItem:newItem];
    [tabView selectTabViewItem:newItem];
    ERBrowser *browserView = [[ERBrowser alloc] initWithFrame:mainView.frame];
    [browserView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
    [mainView addSubview:browserView];
    [browserViews addObject:browserView];
    [browserView setUIDelegate:self];
    [browserView setFrameLoadDelegate:self];
    if (url)
        [[browserView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
    return browserView;
}

此 link 用于按钮 :

- (IBAction)bookmarkButton:(NSButton*)sender
{
    ERBrowser *browserView = [browserViews objectAtIndex:[tabView indexOfTabViewItem:[tabView selectedTabViewItem]]];
    [[browserView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[sender alternateTitle]]]];
    [self addNewTab:(id)];

并且此 IBAction 添加新标签:

- (IBAction)addNewTab:(id)sender {

    [self addWebView:(NSURL *)];
}

我无法理解 addWebView 的原因 [self addWebView:(NSURL *)]; 以及如何添加 addNewTab [self addNewTab:(id)];

请说明如何操作?

语法(type),例如(NSURL *),在方法声明中定义参数的类型,例如:

- (ERBrowser *)addWebView:(NSURL *)url

声明了一个方法 addWebView:,它采用 NSURL * 类型的单个参数,并且在该方法中使用名称 url.

引用该参数

表达式中,语法(type)是一个强制转换操作,一个改变其子表达式静态类型的操作-表达。例如:

(double)3

采用整数表达式 3 并将其转换为 double 值。

在您的方法调用中:

[self addWebView:(NSURL *)];

您正在调用 addWebView: 并将其作为参数传递给表达式的结果:

(NSURL *)

这是一个转换表达式的一半 - 您没有提供任何转换值。因此错误。

您需要的是 NSURL * 类型的 以传递给 addWebView:,根据您的代码,此值将是 URL您要加载的页面。你必须决定你从哪里得到这个。

HTH