2015-08-03 7 views
0

Я довольно новичок в среде IOS и Swift (я НЕ ЗНАЮ OBJ-C). Я пытался понять концепцию, но не смог найти какой-либо пример кода для . Эта концепция работает. Кроме того, я понятия не имею, как это сделать.Общий вид разделен между 2 или более ViewController

  • Насколько я знаю, View является общим компонентом.

  • As View - это общий компонент, к которому можно получить доступ одним из более ViewControllers.

  • A View раскрывает свои функции с использованием протоколов.

Пример:

У нас есть 2 ViewControllers:

ViewControllerOne

ViewControllerTwo

Мы имеем 1 Вид

ViewGeneric

Fig.1

Здесь ViewGeneric является общим компонентом и предоставляет 3 своих функциональных возможностей,

  1. Изменить цвет фона

  2. Изменить Текст метки

  3. Изменить цвет шрифта текста

Теперь я хочу ViewControllerOne использовать функциональные возможности, чтобы изменить цвет фона вида и

ViewControllerTwo использовать функциональные возможности для изменения текста метки и шрифт цвет текста. Очевидно, один за раз.

Это похоже на повторное использование ViewGeneric здесь.

Просьба представить небольшой рабочий пример кода в Swift .... Я буду очень благодарен, если кто-нибудь поможет мне понять, как это сделать.

+0

Не знаю, что вы имели в виду. ViewGeneric - объект класса. Вы можете создать экземпляр его для использования в любом другом контроллере представления. – user523234

ответ

0

Существует много способов сделать то, что вы хотите, но это простой, как вы просили.Сначала нужно создать новый пользовательский UIView:

import UIKit 

class MyGenericView: UIView { 

    var myLabel: UILabel! 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.myLabel = UILabel() 

     // e.g. 
     self.myLabel.frame = CGRectMake(0, 0, self.frame.size.width, 20) 
     addSubview(myLabel) 
    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 

Затем вы можете использовать этот вид в другой контроллер зрения:

import UIKit 

class ViewController1: UIViewController { 

    var myGenericView: MyGenericView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     myGenericView = MyGenericView(frame: CGRectMake(0, 0, 100, 100)) 
     myGenericView.backgroundColor = UIColor.redColor() 
     myGenericView.myLabel.text = "ViewController1 text" 

     self.view.addSubview(myGenericView) 
    } 
} 

Тот же вид в другой контроллер зрения:

import UIKit 

class ViewController2: UIViewController { 

    var myGenericView: MyGenericView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     myGenericView = MyGenericView(frame: CGRectMake(0, 0, 100, 100)) 
     myGenericView.backgroundColor = UIColor.whiteColor() 
     myGenericView.myLabel.textColor = UIColor.blackColor() 
     myGenericView.myLabel.text = "ViewController2 text" 

     self.view.addSubview(myGenericView) 
    } 

} 

Главное в этом дело для понимания - это метод «addSubview», который принимает UIView и добавляет его как «подчиненный» (или дочерний) вид текущего представления. Это создает иерархию представлений с родительскими и дочерними отношениями, что означает - если родитель перемещается, то ребенок перемещается вместе с родителем.

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