オブジェクト数が200を超えるアプリを作成することとなりました。そこで、ストーリーボードを使用してしまうと非常に重くなり、Xcode上でまともにプログラミング等ができなくなってしまいました。
そこでストーリーボードを使用せずに、全てコードだけでOSXアプリを作成したいです。
本当に初歩的なことになってしまうのですが、
ストーリーボードを利用した場合は、@IBAction func ~~ {}の括弧内にボタンを押した時の行動を書くのは理解しています。
コードのみで、NSButtonのアクションの方法を教えていただきたいです。
また、コードで書く際のコツなども教えていただけると幸いです。よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
回答ではありませんが、InterfaceBuilder(IB)に関する情報を記しておきます
- ContainderViewを使ってウィンドウ内/ビュー内を分割できる
- 共通な部分は1つのNSViewControllerにまとめられる
- Storyboardは分割できる
- Xibを使う選択肢もある
1はこんな風に分けられるということです
2は見た目は同じだが内容が違うだけのもの(テーブルのセルのようなもの)は一つのStoryboardを再利用するようにすれば接続等は1回で済みます
このように分けたNSViewControllerを別のStoryboardに分けることが可能です
4ですが、xibはStoryboardと違いシナリオを1ファイルで設定できませんが、そのため、パーツごとにxibがバラバラになるので結果として多量のGUIパーツが一つのxibに乗りにくくなります(=重くなりにくくなる)
投稿2018/06/14 07:29
総合スコア3384
0
普段iOSしか書いたことが無いのですが、こんな感じでどうでしょうか?
target(通知先のクラスのインスタンス)とaction(コールする関数名)を指定すればクリック時に呼ばれます。
swift
1class ViewController: NSViewController { 2 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 // Do any additional setup after loading the view. 7 8 let btn = NSButton(title: "TEST", target: self, action: #selector(buttonDidClick)) 9 btn.frame = NSRect(x: 50, y: 50, width: 100, height: 100) 10 view.addSubview(btn) 11 } 12 13 @objc private func buttonDidClick(_ sender: NSButton) { 14 print("clicked!!") 15 } 16 17 override var representedObject: Any? { 18 didSet { 19 // Update the view, if already loaded. 20 } 21 } 22 23 24}
投稿2018/06/14 01:58
総合スコア8356
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/14 05:16 編集
退会済みユーザー
2018/06/14 07:23
2018/06/14 07:45
退会済みユーザー
2018/06/14 08:34
2018/06/14 08:40
退会済みユーザー
2018/06/18 08:39
2018/06/18 08:40
退会済みユーザー
2018/06/18 08:53
2018/06/18 09:02
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。