2015-04-20 2 views
-1

У меня есть пользовательский класс для UIView, который содержит несколько UIButtons. Когда я создаю UIView в UIViewController, я хочу передать массив (полный заголовков для UIButtons) из UIViewController в UIView.Создайте класс UIView программно с передачей массива из UIViewController

В UIViewController:

class ViewController: UIViewController, UINavigationControllerDelegate { 
    var titles:Array = ["title 1", "title 2", "title 3", "title 4"] 
    var buttonsLeft: buttonsView = buttonsView(titlesLocal: titles) 
    //rest of code 
} 

В buttonsView (мой UIView класс)

class buttonsView: UIView { 

    var titlesLocal:Array<String> = Array() 


    override init(frame: CGRect) { 

     super.init(frame: frame) 
    } 
} 
+0

так в чем проблема? –

+0

Вам нужно создать новый метод инициализации, который принимает массив в качестве аргумента. –

ответ

0

В пользовательской точки зрения определения новых Инициализатора с множеством названий в качестве аргумента следующим образом:

class buttonsView: UIView { 

    var titles : Array<String>? 

    init(titlesLocal atitles : Array<String>) 
    { 
     super.init(frame: CGRectZero) 
     self.titles = atitles 
    } 
} 

К void ошибка этой ошибки сборки ViewController.Type does not have a member named 'titles'. В контроллере представления, Вы не можете назначить переменную var в другой переменном экземпляре вместо этого, Вам нужно определить массив как константа, используя let вне класса следующим образом:

let titles : Array<String> = ["title 1", "title 2", "title 3", "title 4"] 

class ViewController: UIViewController, UINavigationControllerDelegate { 
    var buttonsLeft: buttonsView = buttonsView(titlesLocal: titles) 
    //rest of code 
} 

Как вы создаете строку массив. Хорошо, если вы явно укажете тип массива.

Это может вам помочь!

1
class buttonsView: UIView { 

    var titles: Array<String> 

    init(titles: Array<String>) { 
     self.titles = titles 
     super.init(frame: CGRectZero) 
    } 
} 
+0

Спасибо, что имеет смысл понять, что мне нужно его инициализировать. Но он по-прежнему дает мне такую ​​же ошибку в моем UIViewController, говоря: «UIViewController.type не имеет члена с именем« titles » – user3498976

+0

Ах, это потому, что вы не можете ссылаться на' titles', где вы определяете 'buttonsLeft', потому что это технически не" t, но вы, вероятно, хотите установить 'buttonsLeft' в методе' init'. – AdamPro13

+0

Извините, что это была другая ошибка, вызывающая это. Теперь она принимает переменную. Еще раз спасибо! – user3498976

Смежные вопросы