2015-10-05 1 views
0

Я только что начал кодировать свое приложение в Swift 2 и избегать использования XIB и раскадровки.Создать UIContainerView программно

Однако, я не могу реплицировать following feature. Это именно то, что я хотел.

Я попытался создать UIView для выполнения следующих действий с помощью .backgroundColor, но он работает, однако я не могу связать его с моими UIViewControllers. Просто интересно, как это делается? Как связать мой UIView с моим UIViewController?

коды:

let subFrame : CGRect = CGRectMake(0,screenHeight*1/2.75,screenWidth,screenHeight) 
var loginView = SignUpViewController() 

let signUpView: UIView = UIView(frame: subFrame) 
signUpView.backgroundColor = UIColor.redColor() 

//Controls what each segment does 
switch segmentView.indexOfSelectedSegment { 
case 0: 
     self.view.addSubview(signUpView) 
case 1: 
     self.view.addSubview(loginView) 
default: 
     break; 
} 

Я даже не уверен, что если .view.addSubview(xxx) переписывает/заменяет оригинальный подвид, если это не так. Правильно ли это?

ответ

1

Не начинайте кодирование приложения, если вы не знакомы с простыми вещами на языке OOP (Object-Oriented-Programming), например Swift. Это не способ изучения языка программирования. Конечно, вы можете учиться, экспериментируя, но лучше понять книгу прежде, чем начать с более сложных вещей. Прочтите еще несколько страниц из книги Swift от Apple. Большинство классов для разработки iOS по-прежнему являются Objective-C обернутыми классами (reference type, потому что верх superClass, вероятно, NSObject, помните об этом).

Вот пример кода вы хотите:

class ViewController: UIViewController { 

    let firstView = UIView() 
    let secondView = UIView() 
    let segmentedControlView = UISegmentedControl(items: ["firstView", "secondView"]) 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     self.view.backgroundColor = UIColor.whiteColor() // we need this for the playground 

     /* setup your view here */ 
     /* add your sigment logic somewhere */ 

     self.view.addSubview(self.segmentedControlView) 
     self.view.addSubview(self.firstView) 
     self.view.addSubview(self.secondView) 

     self.segmentedControlView.frame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: 44) 
     self.segmentedControlView.selectedSegmentIndex = 0 // enable the first segment 
     self.segmentedControlView.addTarget(self, action: "segmentIndexChanged:", forControlEvents: UIControlEvents.ValueChanged) 

     /* add your own frame calculation here */ 
     /* I prefer AutoLayout, but for the example static frames will be fine */ 

     self.firstView.frame.origin = CGPoint(x: 0, y: self.segmentedControlView.frame.origin.y + self.segmentedControlView.frame.height) 
     self.firstView.frame.size = CGSize(width: self.view.frame.width, height: self.view.frame.height - self.segmentedControlView.frame.origin.y) 
     // to prevent same code, we just copy the same frame from the firstView 
     // both will sit in the same place 
     self.secondView.frame = self.firstView.frame 

     /* lets add some colors so we'll see our views */ 
     self.firstView.backgroundColor = UIColor.blueColor() 
     self.secondView.backgroundColor = UIColor.redColor() 

     self.secondView.hidden = true // when intializer the secondView is not visible 
    } 

    func segmentIndexChanged(sender: UISegmentedControl) { 

     switch sender.selectedSegmentIndex { 

     case 0: 
      self.firstView.hidden = false 
      self.secondView.hidden = true 

     case 1: 
      self.firstView.hidden = true 
      self.secondView.hidden = false 

     default: 
      break; 
     } 
    } 
} 

Если вы не понимаете функцию, должны должны посмотреть его определение в документации для разработчиков. (Нравится: addSubview)