注册/登录后,在所有VC上都有侧边栏(如Facebook)

时间:2015-10-01 01:40:22

标签: ios swift sidebar

我正在关注这个教程http://www.appcoda.com/sidebar-menu-swift/并让它工作一次,但后来失去了它。我让它适用于TableViewController的MessagesTVC,TVC,但现在它根本不起作用。相反,它现在显示一个随机的页面表视图页面,它内置'<返回'按钮但不是回来它说'<真正'。我不知道我是否更改了segues或代码。这就是我目前的方式: Setup of the current view controllers

所以我基本上希望在登录或注册之后有侧栏菜单以及之后的每个页面。 MessagesTVC的代码是:

import UIKit
import Parse
import Bolts

class MessagesTVC: UITableViewController {

@IBOutlet weak var menuButton: UIBarButtonItem!
@IBAction func composeMessage(sender: AnyObject) {

    //SIGN OUT ACTION FOR NOW...
    PFUser.logOutInBackgroundWithBlock { (error: NSError?) -> Void in
        self.navigationController?.popToRootViewControllerAnimated(true)
    }

}
override func viewDidLoad() {
    super.viewDidLoad()

    if self.revealViewController() != nil {
        menuButton.target = self.revealViewController()
        menuButton.action = "revealToggle:"
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func viewWillAppear(animated: Bool) {
    self.navigationController!.navigationBar.hidden = false

}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 0
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return 0
}
}

除了支持文件组中的.h和.m文件之外,这是我唯一与侧边栏菜单有关的代码。基本上试图实现Facebook的感觉。

2 个答案:

答案 0 :(得分:0)

确保

  1. 您的所有segue都是自定义的,您将segue类设置为SWRevealViewControllerSeguePushController类。
  2. 您可以在故事板中定义“菜单”按钮,也可以在使用此菜单的所有VC中定义代码。
  3. 在VC viewdidload中添加此代码

    SWRevealViewController *revealViewController = self.revealViewController;
    if ( revealViewController )
    {
        [self.sidebarButton setTarget: self.revealViewController];
        [self.sidebarButton setAction: @selector( revealToggle: )];
        [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
    

    在这里输入代码     }

答案 1 :(得分:0)

好的,所以我通过将它拆开并再次组合在一起来找出困难的方法。基本上我不需要从侧边栏菜单到除主视图控制器之外的任何东西。我将侧边栏菜单仅链接到主屏幕的导航控制器,并将其余部分连接起来。然后我添加了这个没有if语句的代码:

    menuButton.target = self.revealViewController()
    menuButton.action = "revealToggle:"
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    self.view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer())

viewDidLoad()方法中,它就像一个魅力。

New Storyboard Layout