Macos 将变量传递给NSView
我试图将数组的内容传递给NSView,以显示矩形x位置。 我已经建立了一个使用随机数和一个按钮的版本,并将代码减少到最低限度,希望它更具可读性。我尝试将数组创建为全局变量。我还试着从这个答案中反转代码。我插入了一条注释:“这就是我想要实现的”,这解释了我想要实现的。 我希望有人能帮忙?谢谢 Swift 3 Xcode 8.1 OSX Mac操作系统非iOSMacos 将变量传递给NSView,macos,class,swift3,Macos,Class,Swift3,我试图将数组的内容传递给NSView,以显示矩形x位置。 我已经建立了一个使用随机数和一个按钮的版本,并将代码减少到最低限度,希望它更具可读性。我尝试将数组创建为全局变量。我还试着从这个答案中反转代码。我插入了一条注释:“这就是我想要实现的”,这解释了我想要实现的。 我希望有人能帮忙?谢谢 Swift 3 Xcode 8.1 OSX Mac操作系统非iOS // // MainWindowController.swift import Cocoa class MainWindowContro
//
// MainWindowController.swift
import Cocoa
class MainWindowController: NSWindowController {
@IBOutlet weak var myView: NSView!
var myArray = [Int]()
override func windowDidLoad() {
super.windowDidLoad()
//just for testing
for i in 0..<6{
myArray.append(i*10)
}
}//EO Overide
//just for testing
@IBAction func myButton(_ sender: AnyObject) {
myFunc()
}
func myFunc(){
for i in 0..<6{
let diceRoll = Int(arc4random_uniform(6) + 1)
myArray[i]=diceRoll * 10
}
myView.needsDisplay = true
}//EO myFunc
}//EnD oF thE wORld
class myGUI: NSView {
override func draw(_ dirtyRect: NSRect) {
for i in..<6{
let fromArray = myArray[i]
let box1 = NSMakeRect(CGFloat(fromArray),0,4,60)//This is what i want to do
let box1Color = NSColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 1.0)
let box1Path: NSBezierPath = NSBezierPath(rect: box1)
box1Color.set()
box1Path.fill()
}//EO For
}}
//
//MainWindowController.swift
进口可可
类MainWindowController:NSWindowController{
@ibvar myView:NSView!
var myArray=[Int]()
重写函数windowDidLoad(){
super.windowDidLoad()
//只是为了测试
对于0中的i..由于您对NSView
的子类有很强的引用,只需添加一个属性:
class myGUI: NSView {
var xPosArray = [Int]()
override func draw(_ dirtyRect: NSRect) {
for xPos in xPosArray { // please avoid ugly C-style index based loops
let box1 = NSMakeRect(CGFloat(xPos), 0, 4, 60)
...
只需在视图控制器中进行设置
func myFunc(){
for i in 0..<6 {
let diceRoll = Int(arc4random_uniform(6) + 1)
myArray[i]=diceRoll * 10
}
myView.xPosArray = myArray
myView.needsDisplay = true
}
func myFunc(){
对于0中的i..我注意到了类名和丑陋的循环,我从不知道存在循环样式(自学),我收到了错误。“类型为'NSView'的值没有成员'array'”感谢Interface Builder您必须将自定义视图的类设置为myGUI
我已经将视图的类设置为myGUI仍然没有luckI知道部件正在工作使用MyFunc中的全局变量集对其进行测试另外您必须更改此行:@IBOutlet弱var myView:myGUI!
在这种情况下,不推荐也不需要。