2017-01-06 3 views
0

Я злиться на этот код, потому что он просто показывает последний вид (в его правильное положение) и забывает рисовать другие ...Не удается правильно складывать взгляды в NSClipView

// Gets a stack of devices 
let volumes = getDevices() 
var index = 0 
for device in volumes { 
    let volume = devicePrototype 
    // devicePrototype it's a custom view 
    volume?.setName(name: device.name) // setting the label for the name 
    volume?.setIcon(icon: device.icon) // setting the image for the icon 
    // Setting the position of the view (width = 600, height = 105) 
    // and all the views have the same size. 
    volume?.layer?.frame = CGRect(x: 0, y: index * 105, width: 600, height: 105) 
    // Adding the view to the NSClipView (Here's the problem :P) 
    devicesStack.addSubview(volume!) 
    index += 1 
} 

Можете ли вы помочь мне найти проблему, пожалуйста?

ответ

0

Я думаю, что вы создаете только один вид (устройство) и изменяете то же самое через цикл. Вы повторно ссылаетесь на один и тот же объект devicePrototype и меняете только свойства. Пожалуйста, проверьте это.

Попытка инициализировать новый объект в каждой итерации,

let volume = DevicePrototype() 
+0

Это не работает, потому что я создал интерфейс, используя пользовательское представление в интерфейсе строителя и я соединил свои этикетки и представления изображения на свой собственный класса с использованием розетки. Итак, дело в том, что если я инициализирую только класс, я не смогу использовать интерфейс: (и мое решение заключалось в том, чтобы вырезать выход из пользовательского представления в делегате приложения (с именем devicePrototype), чтобы я мог создавать экземпляры вроде это ... Как создать несколько экземпляров чего-нибудь, встроенного в построитель интерфейсов? – Cristian

+0

Создайте пользовательские классы и используйте его экземпляры. Вы можете подключить классы к представлениям конструктора интерфейса. –