2016-10-11 4 views
0

У меня есть подкласс для UISegmentedControl, который называется SegControl в классе Touch Cocoa.Где я могу назвать подкласс? (reselectable UISegmentControl Swift 3)

class SegControl: UISegmentedControl { 
override var = "test" 
} 

И теперь у меня есть UISegmentControl в моем ViewController, что я должен сделать, что это соответствует моему пользовательскому классу?

EDIT: Полный код для Reselectable UISegmentControl для Swift 3

class ReselectableSegmentedControl: UISegmentedControl { 

    @IBInspectable var allowReselection: Bool = true 
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     let previousSelectedSegmentIndex = self.selectedSegmentIndex 
     super.touchesEnded(touches, with: event) 
     if allowReselection && previousSelectedSegmentIndex == self.selectedSegmentIndex { 
      if let touch = touches.first { 
       let touchLocation = touch.location(in: self) 
       if bounds.contains(touchLocation) { 
        self.sendActions(for: .valueChanged) 
       } 
      } 
     } 

    } 
} 

UISegmentControl:

var savedSegment: Int = -1 

    @IBAction func segmentChanged(_ sender: ReselectableSegmentedControl) { 

     if (sender.selectedSegmentIndex == savedSegment) { 
      sender.selectedSegmentIndex = UISegmentedControlNoSegment 
      savedSegment = UISegmentedControlNoSegment 
     } 
     else { 
      savedSegment = sender.selectedSegmentIndex 
     } 
+0

Ну, вы просто объявить это как 'SegControl', а не' UISegmentedControl'. Если вы используете его в IB, то вы можете изменить класс элемента управления в IB тоже ... – Grimxn

+0

Я просто изменяю его следующим образом: @IBAction func segment (_ sender: SegControl)? –

+0

Ну, если это действие, которое оно вызывает, то да. – Grimxn

ответ

2

Ваш вопрос не совсем ясен, но для начала вам необходимо заменить все ссылки на UISegmentedControl с SegControl. Это включает в себя обновление любых ссылок в коде, а также изменение имени класса объекта в любом раскадровке или xib.

Вам также необходимо добавить соответствующие методы init в ваш подкласс, чтобы вы могли создавать его экземпляры.

И, конечно, вам нужно добавить дополнительный код, который делает этот подкласс полезным.

+0

Ух ты, я забыл изменить его в Раскадке. Большое спасибо! –

0

добавить по умолчанию UISegmentControl в макете строитель

затем нажмите на него, и в боковом меню под инспектором личных данных -> класс написать имя класса SegControl

enter image description here

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