2017-03-22 6 views
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 
     } 

    }} 

答えて

0

を必要としない削除する

containerView.scroll(myPointer) 

アイテム

gridView.display() 
    scrollbar.floatValue = Float(data!) 
    scrollView.display() 
    containerView.display() 
関連する問題