objective-c - osx桌面程序开发,cocoa,NSScrllView包含NSStackView的问题
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:28:25
0
2
724

我有一个NSStackView,内容在运行时添加,我希望内容超过一定的高度能出现滚动条,因此在外面套了一个NSScrollView。
现在已经可以出现滚动条了,但是有新的问题,NSStackView新增的内容是从下往上新增。

请问,新增的内容如何从上往下。

下面是我的main.storyboard

下面是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.
        }
    }
}

下面是checkbox的代码

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)
    }
}
曾经蜡笔没有小新
曾经蜡笔没有小新

모든 응답(2)
阿神

Stackoverflow에 이 질문을 했는데 문제가 해결되었습니다.

NSClipView는 NSView의 하위 클래스입니다. NSView의 기본 좌표는 왼쪽 하단입니다.

그러므로 isFlipped를 true로 변경하면 됩니다. 이는 좌표를 왼쪽 하단에서 왼쪽 상단으로 뒤집는 것을 의미합니다.

으아아아

그런 다음 main.storyboard에서 ClipView의 사용자 정의 클래스를 FlippedClipView로 변경

원래 답변

阿神

안녕하세요. 저는 스프링 보안을 사용하는 초보자입니다. 저도 UserPasswordAthenticationFilter 사용자 정의에 관해 이전 질문을 검색했는데, 이제 자체 인증을 작성하고 싶었습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿