2013-07-15 101 views
2

對於Objective C來說還是比較新的,而且我之前沒有使用過MVC系統。NSApplication沒有明顯的@interface聲明選擇器openURL

我試圖重定向到通過默認瀏覽器的URL,這裏是相關的代碼:

AppDelegate.h

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (assign) IBOutlet NSWindow *window; 

... 

- (IBAction)about:(id)sender; 

... 

@end 

聲明動作

AppDelegate.m

@implementation AppDelegate 

... 

- (IBAction)about:(id)sender { 

    NSURL *web_url = [NSURL URLWithString:@"http://www.someurl.com/"]; 
    [[NSApplication sharedApplication] openURL:web_url]; // error location 
} 

... 

@end 

在按鈕上執行操作點擊關於:

IDE錯誤:NSApplication沒有可見的@interface聲明選擇器openURL

什麼似乎是問題?

+0

'IBAction'在App Delegate?你應該把'IBAction'放在視圖控制器/視圖中。 – Raptor

回答

10

您可能會在這裏混淆iOS和OS X.你的錯誤信息涉及:

[[NSApplication sharedApplication] openURL:web_url]; 

,並說NSApplication沒有叫openURL:方法。在iOS上,UIApplication類具有這樣的方法,並且在OS X上NSWorkspace類具有這樣的方法。鑑於您使用NSApplication我猜你想要的OS X的情況下,所以應該使用:

[[NSWorkspace sharedWorkspace] openURL:web_url]; 
+0

來自iOS的UIApplication的openURL在appDelegate上執行,其中是否執行了NSWorkspace的openURL? –

+0

我發現這個http://stackoverflow.com/questions/6303485/nsattributedstring-clicks,我可以解決我想要的。我的評論可能沒有用,我可能會很快刪除它,以防萬一你想刪除你的。 –

相關問題