如何打电话 - (IBAction)

时间:2015-03-21 20:19:25

标签: objective-c macos cocoa ibaction

我是objective-c的新手。 需要创建一个按钮链接,它将在新窗口中打开。要做到这一点,我需要做IBAction来创建一个新窗口。 这个添加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;
}

此按钮的链接:

- (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)];

请解释一下怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

声明方法addWebView:,它接受​​NSURL *类型的单个参数,并在该方法中使用名称url引用该参数。

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

(double)3

获取整数表达式3并将其强制转换为double值。

在方法调用中:

[self addWebView:(NSURL *)];

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

(NSURL *)

这是演员表达的一半 - 你没有提供演员的价值。因此错误。

您需要的是NSURL *类型的,要传递给addWebView:,您的代码中的此值将是您要加载的网页的网址。你必须决定从哪里获得这个。

HTH