首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改视图控制器Swift后的问题

更改视图控制器Swift后的问题
EN

Stack Overflow用户
提问于 2015-12-08 01:28:15
回答 2查看 164关注 0票数 1

我有这样的代码:

start class

代码语言:javascript
复制
self.registrazioneButton = myButton(frame: CGRectMake(30, 359+41, 290, 40), title: "Sign In")
self.registrazioneButton!.addTarget(self, action: "registrazioneButtonTap:", forControlEvents: .TouchUpInside)
self.view.addSubview(registrazioneButton!)

func registrazioneButtonTap(sender: AnyObject) { //Effettua login
    var registrazione : registrazioneViewController = storyboard?.instantiateViewControllerWithIdentifier("registrazione") as! registrazioneViewController
    defaultFunction.flipRightViewController(self, destinationViewController: registrazione, duration: 1.0)
}

RegistrazioneViewController是这样:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    self.registrazioneButton = myButton(frame: CGRectMake(30, 400, 290, 40), title: "Registrati")
    self.registrazioneButton!.addTarget(self, action: "registrazione", forControlEvents: .TouchUpInside)
    self.view.addSubview(registrazioneButton!)
}

func registrazione() {
      print("TEST")
}

DefaultFunction是这样的

代码语言:javascript
复制
private static func flipViewController(currentViewController: UIViewController, destinationViewController: UIViewController,
    duration: NSTimeInterval, typeTransiction: UIViewAnimationTransition) {

    UIView.beginAnimations("View Flip", context: nil)
    UIView.setAnimationDuration(duration)
    UIView.setAnimationTransition(UIViewAnimationTransition.FlipFromRight, forView: self.view, cache: false)
    UIView.setAnimationTransition(typeTransiction, forView: currentViewController.view, cache: true)
    currentViewController.removeFromParentViewController()
    currentViewController.view.addSubview(destinationViewController.view)
    UIView.commitAnimations()
}

public static func flipRightViewController(currentViewController : UIViewController , destinationViewController : UIViewController , duration : NSTimeInterval){
    flipViewController(currentViewController, destinationViewController: destinationViewController, duration: duration, typeTransiction: UIViewAnimationTransition.FlipFromRight)
}

我的问题是,registrazioneButton in RegistrazioneViewController当我点击它时不会触发事件(方法registrazione()和我不明白为什么。

为了将view controllerstart class更改为RegistrazioneViewController,我在DefaultFunction类中使用了flipRightViewController方法。

我哪里错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 17:18:08

目前还不清楚所需的设计是什么,但是flipViewController并没有使视图控制器层次结构与视图层次结构保持同步。正因为如此,孩子的视图控制器似乎已经超出了范围。即使您将其保留在范围内(通过添加您自己对其的强引用),视图层次结构也会与视图控制器层次结构不同步。

显示具有翻转动画的第二个视图控制器的最简单方法是:

代码语言:javascript
复制
let controller = storyboard!.instantiateViewControllerWithIdentifier("Second")
controller.modalTransitionStyle = .FlipHorizontal
showViewController(controller, sender: self)

当你不理会它的时候,它就会倒转过来。

如果您真的想使用视图控制器包含将其表示为当前视图的子视图,正如代码片段提示的那样,您需要执行所有必要的包含调用,以使视图层次结构与视图控制器层次结构保持同步。例如,如果要将视图控制器的视图添加为另一个视图的子视图,则可以执行以下操作:

代码语言:javascript
复制
let controller = storyboard!.instantiateViewControllerWithIdentifier("Second")
addChildViewController(controller)
UIView.transitionWithView(containerView, duration: 0.5, options: .TransitionFlipFromRight, animations:
    {
        controller.view.frame = self.containerView.bounds
        self.containerView.addSubview(controller.view)
    }, completion: { finished in
        controller.didMoveToParentViewController(self)
})

注:顺序如下:

  • 实例化子视图控制器
  • 在父视图控制器上调用addChildViewController
  • 根据您的需要添加子视图、配置和动画。
  • 在子视图控制器上调用didMoveToParentViewController

另外,当您想要删除它时,顺序是:

  • 在子视图控制器上调用willMoveToParentViewController(nil)
  • 删除子视图,按您的意愿将此过程动画化。
  • 在子视图控制器上调用removeFromParentViewController()

如果这个子视图控制器正在接管整个铬,那么现在您可能会坚持显示视图控制器,如这个答案的顶部所示。如果您不想覆盖整个屏幕,您可以使用自定义的modalPresentationStyle

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 02:19:31

试试下面的代码。如果有用的话让我知道

代码语言:javascript
复制
self.registrazioneButton!.addTarget(self, action: "registrazione:", forControlEvents: .TouchUpInside)

func registrazione(button: UIButton) {
    // do something
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34146453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档