2014-11-13 2 views
0

Я хотел бы создать анимацию в классе (за пределами моего нормального зрения) вызывается из viewDidLoad метода и заставить ее работать на раскадровке:как ссылка раскадровка (текущий вид) из другого нормального класса

Как я подключить эффект класса с классом ViewController (раскадровка) ??

class ViewController : UIViewController 
    { 
     var effetto:Effects = Effects() 

     override func viewDidLoad() 
     { 
      super.viewDidLoad() 
      effects.typeEffects = 1 
      effects.createEffect 
     } 
    } 

    class Effects { 

     var squareView: UIView! 
     var gravity: UIGravityBehavior! 
     var animator: UIDynamicAnimator! 
     var collision: UICollisionBehavior! 

     var typeEffects = 0 

     func createEffect() 
     { 
      If var typeEffect = 1){ 
      gravity() 
      } else { 
      other() 
      } 
     } 

     func gravity() 
     { 
     squareView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) 
     squareView.backgroundColor = UIColor.blueColor() 
     viewController.addSubview(squareView) 

     animator = UIDynamicAnimator(referenceView: viewControlle) 
     gravity = UIGravityBehavior(items: [squareView]) 
     animator.addBehavior(gravity) 

     collision = UICollisionBehavior(items: [squareView]) 
     collision.translatesReferenceBoundsIntoBoundary = true 
     // collision.addBoundaryWithIdentifier("barrier", fromPoint: CGPointMake(self.view.frame.origin.x, 350), toPoint: CGPointMake(self.view.frame.origin.x + self.view.frame.width, 350)) 
     animator.addBehavior(collision) 
     } 
     func other() 
     { 
     ...... 
     } 

    } 

ответ

0

Короче говоря, вы не подключаете свой объект не подкласса к чему-либо в раскадровке. Имя класса UIViewController не является описательным, но оно все равно будет работать и содержит экземпляр класса Effects. В viewDidLoad вы создаете экземпляр этого класса. Просто введите ViewController для имени класса в инспекторе идентификации в IB. В противном случае назовите его более описательным, например, следующим, а затем добавьте EffectsViewController в инспекторе идентификации, если он запутан. Что-то вроде следующего должно работать (не проверено и показано чисто, чтобы показывать передачу объекта)

class EffectsViewController : UIViewController 
    { 
     var effects:Effects = Effects() 

     override func viewDidLoad() 
     { 
      super.viewDidLoad() 
      effects.effectsViewController = self 
      effects.typeEffects = 1 
      effects.createEffect 
     } 
    } 

    class Effects { 
     var effectsViewController: EffectsViewController! 
     var squareView: UIView! 
     var gravity: UIGravityBehavior! 
     var animator: UIDynamicAnimator! 
     var collision: UICollisionBehavior! 

     var typeEffects = 0 

     func createEffect() 
     { 
      If var typeEffect = 1){ 
      gravity() 
      } else { 
      other() 
      } 
     } 

     func gravity() 
     { 
     squareView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) 
     squareView.backgroundColor = UIColor.blueColor() 
     effectsViewController.addSubview(squareView) 

     animator = UIDynamicAnimator(referenceView: viewControlle) 
     gravity = UIGravityBehavior(items: [squareView]) 
     animator.addBehavior(gravity) 

     collision = UICollisionBehavior(items: [squareView]) 
     collision.translatesReferenceBoundsIntoBoundary = true 
     // collision.addBoundaryWithIdentifier("barrier", fromPoint: CGPointMake(self.view.frame.origin.x, 350), toPoint: CGPointMake(self.view.frame.origin.x + self.view.frame.width, 350)) 
     animator.addBehavior(collision) 
     } 
     func other() 
     { 
     ...... 
     } 

    } 
+0

отлично, спасибо большое !!! отсутствует только INIT в классе EFFECTS. – JoeyTrl

0

Просто выберите ViewController в раскадровке. Затем перейдите к инспектору идентификации на правой панели. Верхний вариант - выбор класса.

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