在我的iOS应用中,我提供了一个modalTransitionStyle = UIModalTransitionStyleFlipHorizontal
的视图控制器。当控制器出现时,当控制器翻转到位时,其工具栏中的文本UIBarButtonItem会执行一个奇怪的幻灯片动画。
我不希望这个动画发生。我该如何预防?
编辑:由于Swift的简洁,这里有一个完整的例子来重现问题:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
let vc = TestVC()
self.window!.rootViewController = UINavigationController(rootViewController: vc)
return true
}
}
class PresentedVC: UIViewController {
init() {
super.init(nibName: nil, bundle: nil)
toolbarItems = [UIBarButtonItem(title: "Foo", style: .Plain, target: nil, action: nil)]
modalTransitionStyle = .FlipHorizontal
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.navigationController!.setToolbarHidden(false, animated: false)
}
}
class TestVC: UITableViewController {
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell = UITableViewCell(style: .Default, reuseIdentifier: "noId")
cell.textLabel.text = "Foo"
return cell
}
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let vc = PresentedVC()
let nvc = UINavigationController(rootViewController: vc)
self.presentViewController(nvc, animated: true, completion: nil)
}
}
答案 0 :(得分:0)
我通过在viewDidLoad
中进行调用来修复此问题,以便在构造控制器时,工具栏始终可见。然后我分别使用viewWillAppear:
和viewWillDisappear:
来显示和隐藏控制器,以便导航控制器中的其他控制器没有工具栏,如果它们不应该有。