0
私は内部にグリッドを持つNSScrollviewを使用しています。すべてが機能しており、スクロールバーがグリッドビューを予期したとおりに動かします。私は今、スクロールからスライダーを制御したいと思っています。それはうまく動作し、スクロールを動かす。これは実際にはビューをスクロールしません。スクロールを使用する場合は行います。私はそれが活性化する必要があると思ったNSScrollerNoPartを試してみました。私はそれをオンにするかもしれない何かを見つけるためにすべてのIBの窓を見ている。おかげレディングスライダを制御するNSScroller
ためHERESに私のコードのスウィフト3 Xcode8 OSX MacOSのないIOS必要だったことすべてがmySlider内側するCGPoint
let myPoint = CGPoint(x:Double(data),y:0.0)
を作成するために、次に使用された自分の質問に応えて
// MainWindowController.swift
import Cocoa
class MainWindowController: NSWindowController {
@IBOutlet weak var scrollView: NSScrollView!
@IBOutlet weak var containerView: NSView!
@IBOutlet weak var gridView: GridGUI!
@IBOutlet weak var scrollbar: NSScroller!
override func windowDidLoad() {
super.windowDidLoad()
//NSScrollerNoPart = true
}//EO Overide
@IBAction func mySlider(_ sender: AnyObject) {//set to min 0 max 1
let data = sender.floatValue
print("Data",data)
scrollbar.floatValue = Float(data!)
gridView.display()
scrollView.display()
containerView.display()
}//eo slider
}//EnD oF thE wORld
class GridGUI: NSView {
var xPosArray = [Int]()
override func draw(_ dirtyRect: NSRect) {
//--------- BACKGROUND
let back1 = NSMakeRect(0,0,9000,482)
let back1Color = NSColor(red: 0.3, green: 0.3, blue: 0.5, alpha: 0.2)
let back1Path: NSBezierPath = NSBezierPath(rect: back1)
back1Color.set()
back1Path.fill()
var gridY:CGFloat = 0.0 //Vertical position
var gridYGray:CGFloat = 0.9
for i in 0..<225{
if (i % 16 == 0){gridYGray = 0.2}
else{gridYGray = 0.7}
//--------- VERTICAL GRID LINES
let gridY1 = NSMakeRect(gridY,0, 4.0,480)
let gridY1Color = NSColor(red: gridYGray, green: gridYGray, blue: gridYGray, alpha: 1.0)
let gridY1Path: NSBezierPath = NSBezierPath(rect: gridY1)
gridY1Color.set()
gridY1Path.fill()
gridY = gridY + 40.0
}
//HORIZONTAL GRID LINES
var gridX:CGFloat = 0.0
for _ in 0..<25{
//--------- HORIZONTAL GRID LINES
let gridX1 = NSMakeRect(0,gridX,9000,2)
let gridX1Color = NSColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
let gridX1Path: NSBezierPath = NSBezierPath(rect: gridX1)
gridX1Color.set()
gridX1Path.fill()
gridX = gridX + 20.0
}
}}