2017年03月20日

[macOS, Swift2] ファイル選択ダイアログ

未だに古い環境のOS Xでプログラミングしてるんだけど、その中の基本的な操作であるファイルオープンダイアログの使い方を一応覚え書きとして。

NSOpenPanelはObjective-C時代そのまま。インスタンスはそのままコンストラクタで作る。シートでダイアログを開いて、結果はブロックで受け取る。OK/Cancelは NSFileHandlingPanelOKButton / NSFileHandlingPanelCancelButton で判定。

以下はNSViewControllerのサブクラス中で使う場合。


func showOpenPanel() {
let panel = NSOpenPanel()
panel.beginSheetModalForWindow(self.view.window!) {
[weak self] (response) -> Void in

switch ( response ) {
case NSFileHandlingPanelOKButton:
let urls = panel.URLs
self?.readFromURL(urls[0])
break
default:
return
}
}
}


シートを表示している最中だからselfがなくなることはないと思うけど、一応ブロック中でselfを使う場合は習慣化させたいので weak self 。

ファイルを1つだけ選択する場合。NSURLで受け取るのが現代的。複数選択する場合やディレクトリ可の場合には beginSheet... の前に下記コードを入れておくだけ。


self.allowsMultipleSelection = true
self.canChooseDirectories = true


ラベル:Swift MacOS NSOpenPanel
posted by 永遠製作所 at 00:07| 東京 ☀| Comment(0) | TrackBack(0) | Swift | このブログの読者になる | 更新情報をチェックする