我试图允许用户通过单击应用程序菜单栏上的文件来选择要打开的.png文件,然后以相同的方式打开Microsoft Word文件。
问题是@IBAction func SelectFileToOpen(sender: NSMenuItem) {}
似乎无法访问全局变量或设置它们,并且似乎完全独立于代码的其余部分
这是我的代码,旨在演示该方法如何读取全局变量:
//
// AppDelegate.swift
// Swift class based
//
// Created by ethan sanford on 2015-01-16.
// Copyright (c) 2015 ethan D sanford. All rights reserved.
//
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
var myURL=NSURL(fileURLWithPath: "")
@IBAction func btnConcat(sender: NSButton) {
myURL = NSURL(fileURLWithPath: "///Users/ethansanford/Desktop/BigWriting.png")
var say_something = "set URL button clicked"
print(say_something);
print(myURL)
}
@IBAction func SelectFileToOpen(sender: NSMenuItem) {
var say_something = "Menu bar, file-open clicked:"
print(say_something);
print(myURL);
}
@IBAction func communicate(sender: AnyObject) {
var say_something = "communicate button clicked:"
print(say_something);
print(myURL);
}
}
以下是此代码生成的NSlog
。请注意,URL按钮和commincate按钮方法可以共享myURL变量,但文件打开按钮似乎无法:
URL button clickedOptional(file://///Users/ethansanford/Desktop/BigWriting.png)
communicate button clicked:Optional(file://///Users/ethansanford/Desktop/BigWriting.png)Menu bar
file-open clicked:nil
communicate button clicked:Optional(file://///Users/ethansanford/Desktop/BigWriting.png)
我需要myURL
变量才能在所有三种方法中使用。当我需要这些方法进行通信时,这是必要的,这样我就可以选择用户并将其显示在图像中。感谢您的任何帮助,您可以提供。我认为问题是菜单栏中文件按钮特有的。
有人可以向我解释如何解决这个问题吗?
答案 0 :(得分:0)
在您的代码中myURL
是一个将在app delegate中创建的实例变量。我想知道你是否过分简化了代码示例。
说过它应该可以从app委托的实例方法访问,但是在AppDelegate中而不是在UI代码中使用IBAction方法似乎是一个奇怪的选择(我从来没有尝试过)。