cari

Rumah  >  Soal Jawab  >  teks badan

objektif-c - pembangunan program desktop osx, koko, NSScrllView termasuk masalah NSStackView

Saya mempunyai NSStackView, dan kandungannya ditambahkan pada masa jalanan Saya berharap bar skrol akan muncul apabila kandungan melebihi ketinggian tertentu, jadi saya meletakkan NSScrollView di luar.
Bar skrol kini boleh muncul, tetapi terdapat masalah baharu Kandungan baharu NSStackView ditambah dari bawah ke atas.

Sila beritahu saya cara menambah kandungan baharu dari atas ke bawah.

Berikut ialah papan cerita utama saya

Berikut ialah kod viewController

import Cocoa

class ViewController: NSViewController {

    var todoList:[Todo] = []
    
    @IBOutlet weak var todosStackView: NSStackView!
    @IBOutlet weak var todosScrollView: NSScrollView!
    
    @IBAction func onEnter(sender: NSTextField) {
        //创建Todo
        let todo = Todo()
        todo.content = sender.stringValue
        self.todoList.append(todo)
        
        //根据上面的Todo创建一个checkbox
        let todoItemView = TodoItem()
        todoItemView.setButtonType(.SwitchButton)
        todoItemView.todo=todo
        
        //将上面的checkbox加入NSStackView
        todosStackView.addView(todoItemView, inGravity: .Top)
    }
    
    @IBOutlet var todos: NSArrayController!
    override func viewDidLoad() {
        super.viewDidLoad()
        todosScrollView.hasVerticalScroller = true
        todosScrollView.hasHorizontalScroller = true
        // Do any additional setup after loading the view.
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}

Berikut ialah kod kotak pilihan

import Cocoa

class TodoItem: NSButton {
    var todo:Todo!{
        didSet {
            self.title = self.todo.content
            self.state = self.todo.done ? NSOnState : NSOffState
        }
    }
    
    func completeTodo(){
        if(self.state == NSOnState){
            self.todo.done = true
        }else{
            self.todo.done = false
        }
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
        self.setButtonType(.SwitchButton)
        self.target = self
        self.action = #selector(self.completeTodo)
    }
}
曾经蜡笔没有小新曾经蜡笔没有小新2842 hari yang lalu767

membalas semua(2)saya akan balas

  • 阿神

    阿神2017-05-02 09:30:25

    Saya bertanya soalan ini pada stackoverflow dan ia menyelesaikan masalah saya.

    NSClipView ialah subkelas NSView Koordinat lalai NSView ialah sudut kiri bawah.

    Jadi cuma tukar isFlipped kepada true, yang bermaksud menterbalikkan koordinat dari sudut kiri bawah ke sudut kiri atas.

    import Cocoa
    
    class FlippedClipView : NSClipView{
        override var flipped:Bool {
            get {
                return true
            }
        }
    }

    Kemudian tukar kelas tersuai ClipView kepada FlippedClipView

    dalam main.storyboard

    Jawapan asal

    balas
    0
  • 阿神

    阿神2017-05-02 09:30:25

    Helo, saya seorang pemula menggunakan keselamatan musim bunga Saya mencari soalan anda sebelumnya di Internet tentang menyesuaikan UserPasswordAthenticationFilter Saya juga menghadapi masalah yang sama dan ingin menulis pengesahan saya sendiri?

    balas
    0
  • Batalbalas