2016-11-02 30 views
0

我有问题连接UITableViewController闪烁。UITableViewController闪烁行为

这是在这个视频link介绍。从LIB

func balanceAction() { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let controller = storyboard.instantiateViewController(withIdentifier: "MainView") 
     presentView(view:controller) 
} 

fileprivate func presentView(view: UIViewController) { 

     (navigationDrawerController?.rootViewController as? ToolbarController)?.transition(to: view, duration: 0.3) 
} 

和方法:

我提出的UITableViewController这样

/** 
A method to swap rootViewController objects. 
- Parameter toViewController: The UIViewController to swap 
with the active rootViewController. 
- Parameter duration: A TimeInterval that sets the 
animation duration of the transition. 
- Parameter options: UIViewAnimationOptions thst are used 
when animating the transition from the active rootViewController 
to the toViewController. 
- Parameter animations: An animation block that is executed during 
the transition from the active rootViewController 
to the toViewController. 
- Parameter completion: A completion block that is execited after 
the transition animation from the active rootViewController 
to the toViewController has completed. 
*/ 
open func transition(to viewController: UIViewController, duration: TimeInterval, options: UIViewAnimationOptions = [], animations: (() -> Void)? = nil, completion: ((Bool) -> Void)? = nil) { 

    rootViewController.willMove(toParentViewController: nil) 
    addChildViewController(viewController) 
    viewController.view.frame = rootViewController.view.bounds 
    transition(from: rootViewController, 
     to: viewController, 
     duration: duration, 
     options: options, 
     animations: animations) { [weak self, viewController = viewController, completion = completion] (result) in 
      guard let s = self else { 
       return 
      } 

      viewController.didMove(toParentViewController: s) 
      s.rootViewController.removeFromParentViewController() 
      s.rootViewController = viewController 
      s.rootViewController.view.clipsToBounds = true 
      s.rootViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
      s.rootViewController.view.contentScaleFactor = Device.scale 
      completion?(result) 
     } 
} 

而且MainView()

class MainView: UITableViewController { 

    var data = BalanceViewController() 

    open override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = Color.grey.lighten5 

     prepearTableView() 
     prepareToolbar() 
    } 

    private func prepearTableView() { 
     tableView.register(UINib(nibName: "BalanceCell", bundle: nil), forCellReuseIdentifier: "BalanceCell") 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.none 
     self.tableView.dataSource = data 
     self.tableView.delegate = self 
    } 

    private func prepareToolbar() { 
     guard let tc = toolbarController else { 
      return 
     } 
     tc.toolbar.title = "Balance report" 
     tc.toolbar.detail = "Lifelong overall report" 
    } 

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return balanceCellHeight 
    } 

    override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 
    } 
} 
+2

你有任何与“MainView”控制器相关的代码吗? – CosmicMind

+0

@CosmicMind我更新我的问题 –

+0

这个转换代码看起来很奇怪,你试过禁用它吗? – redent84

回答

1

对不起,任何延迟,我能重现这个问题,并发布了一个修复程序,这应该基于我的复制工作。请尝试Material 2.3.18

谢谢你和所有最好:)