我是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)];
请解释一下怎么做?
答案 0 :(得分:0)
语法(type)
,例如(NSURL *)
,在方法声明中定义参数的类型,例如:
- (ERBrowser *)addWebView:(NSURL *)url
声明方法addWebView:
,它接受NSURL *
类型的单个参数,并在该方法中使用名称url
引用该参数。
在表达式中,语法(type)
是强制转换操作,这是一种更改其子表达式的静态类型的操作。例如:
(double)3
获取整数表达式3
并将其强制转换为double
值。
在方法调用中:
[self addWebView:(NSURL *)];
您正在调用addWebView:
并将其作为参数传递给表达式的结果:
(NSURL *)
这是演员表达的一半 - 你没有提供演员的价值。因此错误。
您需要的是NSURL *
类型的值,要传递给addWebView:
,您的代码中的此值将是您要加载的网页的网址。你必须决定从哪里获得这个。
HTH