【发布时间】:2015-04-24 08:41:33
【问题描述】:
我目前在屏幕左侧设置了我的表格视图,以便我可以从那里为它设置动画,如下所示:
override func viewDidAppear(animated: Bool) {
tblView.frame = CGRectMake(-self.view.frame.size.width, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
}
现在我已经设置了一个按钮,将 tableview 从 - self.view.frame.size.width 设置为 0,如下所示,这工作正常:
@IBAction func showMenu(sender: AnyObject) {
self.tblView.hidden = false
if flag == false{
showMenu()
} else {
hidemenu()
}
}
func showMenu(){
UIView.animateWithDuration(0.3, animations:{
self.tblView.frame = CGRectMake(0, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
} )
flag = true
}
func hidemenu(){
UIView.animateWithDuration(0.3, animations:{
self.tblView.frame = CGRectMake(-self.view.frame.size.width, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
} )
flag = false
}
问题是当我点击表格视图单元格后试图隐藏菜单时:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var row = indexPath.row
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
switch row {
case 0:
hidemenu()
println("hide menu")
if firstVC == nil{
firstVC = storyboard.instantiateViewControllerWithIdentifier("firstVC") as? FirstViewController
}
activeViewController = firstVC
default:
println("no index")
}
}
tableview 不会向左隐藏,而是动画似乎是从右侧开始并以 0 结束。相反,我正在寻找从 0 到 x 轴上 -self.view.frame.size.width 位置的动画.
hideMenu 函数被调用。
已编辑:在使用 None 进行数小时的调试后,我发现在选择方法时我的错误就行了,我将视图控制器分配给 containerView 的内容视图
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
hidemenu()
var row = indexPath.row
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
switch row {
case 0:
if firstVC == nil{
firstVC = storyboard.instantiateViewControllerWithIdentifier("firstVC") as? FirstViewController
}
activeViewController = firstVC
.....
}
我有变量声明为
var activeViewController : UIViewController? {
didSet{
removeInactiveViewController(oldValue)
updateActiveViewController()
}
}
func updateActiveViewController(){
if let activeVC = activeViewController{
activeVC.view.frame = contentView.bounds
contentView.addSubview(activeVC.view)//this line gives me error
activeVC.didMoveToParentViewController(self)
}
}
要深入了解动画中的错误是在内容视图上添加 activeVC 作为 contentView.addSubview(activeVC.view)。抱歉发了这么长的帖子..
如果我评论该行动画效果很好..但是视图没有添加到我的主视图中...我该如何解决这个问题?
【问题讨论】:
标签: ios uitableview swift animation