Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在xcode 7中创建导航菜单_Ios_Swift_Xcode - Fatal编程技术网

Ios 如何在xcode 7中创建导航菜单

Ios 如何在xcode 7中创建导航菜单,ios,swift,xcode,Ios,Swift,Xcode,如何为整个项目创建一个导航菜单。 我创建了一个,但仅用于使用SWRevealViewController的特定视图。 你不能用两种方法来做 a) 创建带有侧菜单的ViewController,并在每次需要侧菜单时为view controller创建子类 class BaseViewController: UIViewController { override func viewDidLoad() { let menuButton = UIBarButtonItem.init

如何为整个项目创建一个导航菜单。
我创建了一个,但仅用于使用SWRevealViewController的特定视图。

你不能用两种方法来做

a) 创建带有侧菜单的ViewController,并在每次需要侧菜单时为view controller创建子类

class BaseViewController: UIViewController {
    override func viewDidLoad() {
       let menuButton = UIBarButtonItem.init(image: image, style: .plain, target: self, action: #selector(funcToCall))
        navigationItem.leftBarButtonItem = menuButton
    }
 }
和子类
BaseViewController

class MyViewController: BaseViewController {
}
class MyViewController: UIViewController {
    override func viewDidLoad() {
       addMenu()
    }
}
b) 另一种更好的方法是使用
extension

extension UIViewController {
    func addMenu() {
      let menuButton = UIBarButtonItem.init(image: image, style: .plain, target: self, action: #selector(SWRevealViewController.rightRevealToggle(_:)))
       navigationItem.leftBarButtonItem = menuButton
    }
}
并在
MyViewController

class MyViewController: BaseViewController {
}
class MyViewController: UIViewController {
    override func viewDidLoad() {
       addMenu()
    }
}
许多方法之一是创建swift文件
Helper.swift

然后


您可以将您的RevealVC嵌入导航控制器,并将导航项添加到RevealVC,但这样的菜单将是静态的

我通常使用TopViewController类:

class TopViewController: UIViewController  {

    @IBOutlet weak var menuButton: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()

        if self.revealViewController() != nil {
            revealViewController().rightViewRevealWidth = view.frame.size.width / 2
            menuButton.target = revealViewController()
            menuButton.action = #selector(SWRevealViewController.rightRevealToggle(_:))
            view.addGestureRecognizer(revealViewController().panGestureRecognizer())
        }
    }

}
每个视图控制器将仅继承此选项。在这种情况下,您应该在故事板中为每个视图控制器创建navigationVC(我认为这是最好的解决方案)。不要忘记将插座从故事板拖动到TopViewController


我想只创建一个导航VC是不可能的。

你的问题不清楚我想创建一个幻灯片菜单,我可以从项目中的任何视图打开OK,在那里你可以点击我不知道怎么做我创建了菜单,但只创建了一个视图OK删除连接,使用较少的连接,在SWL主页的didselect中添加程序导航我不理解解决方案b,我在其中放置了此部件扩展UIViewController{func addMenu(){let menuButton=UIBarButtonItem.init(image:image,style:.plain,target:self,action:#selector(funcToCall))navigationItem.leftBarButtonItem=menuButton}funcToCall的功能和放置位置请参见代码。我为你的使用做了调整。将
funcToCall
替换为
SWRevealViewController.RightRevealtogle(:)
它与我一起工作,非常感谢解决方案b节省了我的时间。很高兴它帮助了你。:)