浏览代码

Added slider menu and app structure.

Inigo Valentin 10 年之前
父节点
当前提交
9997489686
共有 65 个文件被更改,包括 2818 次插入61 次删除
  1. 171 2
      Gasteizko Margolariak.xcodeproj/project.pbxproj
  2. 22 0
      Gasteizko Margolariak/ActivitiesViewController.swift
  3. 112 14
      Gasteizko Margolariak/AppDelegate.swift
  4. 30 12
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/Contents.json
  5. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-1.png
  6. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-10.png
  7. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-11.png
  8. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-12.png
  9. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-2.png
  10. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-3.png
  11. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-4.png
  12. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-5.png
  13. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-6.png
  14. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-7.png
  15. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-8.png
  16. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-9.png
  17. 二进制
      Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo.png
  18. 0 27
      Gasteizko Margolariak/Base.lproj/LaunchScreen.storyboard
  19. 42 0
      Gasteizko Margolariak/Base.lproj/LaunchScreen.xib
  20. 255 5
      Gasteizko Margolariak/Base.lproj/Main.storyboard
  21. 57 0
      Gasteizko Margolariak/BaseTableViewCell.swift
  22. 21 0
      Gasteizko Margolariak/BlogViewController.swift
  23. 43 0
      Gasteizko Margolariak/DataTableViewCell.swift
  24. 54 0
      Gasteizko Margolariak/DataTableViewCell.xib
  25. 32 0
      Gasteizko Margolariak/ExSlideMenuController.swift
  26. 21 0
      Gasteizko Margolariak/GalleryViewController.swift
  27. 22 0
      Gasteizko Margolariak/GmscheduleViewController.swift
  28. 22 0
      Gasteizko Margolariak/HomeViewController.swift
  29. 26 0
      Gasteizko Margolariak/ImageHeaderView.swift
  30. 42 0
      Gasteizko Margolariak/ImageHeaderView.xib
  31. 73 0
      Gasteizko Margolariak/Images.xcassets/AppIcon.appiconset/Contents.json
  32. 23 0
      Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/Contents.json
  33. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp.png
  34. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp@2x.png
  35. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp@3x.png
  36. 23 0
      Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/Contents.json
  37. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp.png
  38. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp@2x.png
  39. 二进制
      Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp@3x.png
  40. 4 1
      Gasteizko Margolariak/Info.plist
  41. 22 0
      Gasteizko Margolariak/LablancaViewController.swift
  42. 138 0
      Gasteizko Margolariak/LeftViewController.swift
  43. 22 0
      Gasteizko Margolariak/LocationViewController.swift
  44. 95 0
      Gasteizko Margolariak/MainViewController.swift
  45. 22 0
      Gasteizko Margolariak/ScheduleViewController.swift
  46. 21 0
      Gasteizko Margolariak/SettingsViewController.swift
  47. 1051 0
      Gasteizko Margolariak/SlideMenuController.swift
  48. 8 0
      Gasteizko Margolariak/SlideMenuControllerSwift.xcdatamodeld/.xccurrentversion
  49. 4 0
      Gasteizko Margolariak/SlideMenuControllerSwift.xcdatamodeld/SlideMenuControllerSwift.xcdatamodel/contents
  50. 23 0
      Gasteizko Margolariak/String.swift
  51. 43 0
      Gasteizko Margolariak/SubContentsViewController.storyboard
  52. 16 0
      Gasteizko Margolariak/SubContentsViewController.swift
  53. 30 0
      Gasteizko Margolariak/UIApplication.swift
  54. 50 0
      Gasteizko Margolariak/UIColor.swift
  55. 28 0
      Gasteizko Margolariak/UIImage.swift
  56. 69 0
      Gasteizko Margolariak/UIImageView.swift
  57. 33 0
      Gasteizko Margolariak/UITableViewExtension.swift
  58. 20 0
      Gasteizko Margolariak/UIView.swift
  59. 28 0
      Gasteizko Margolariak/UIViewController.swift
  60. 二进制
      Gasteizko Margolariak/res/ic_menu_black_24dp.png
  61. 二进制
      Gasteizko Margolariak/res/ic_menu_black_24dp@2x.png
  62. 二进制
      Gasteizko Margolariak/res/ic_menu_black_24dp@3x.png
  63. 二进制
      Gasteizko Margolariak/res/ic_notifications_black_24dp.png
  64. 二进制
      Gasteizko Margolariak/res/ic_notifications_black_24dp@2x.png
  65. 二进制
      Gasteizko Margolariak/res/ic_notifications_black_24dp@3x.png

+ 171 - 2
Gasteizko Margolariak.xcodeproj/project.pbxproj

@@ -7,13 +7,46 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		9310BCBD1D6B9E4700C93AFA /* res in Resources */ = {isa = PBXBuildFile; fileRef = 9310BCBC1D6B9E4700C93AFA /* res */; };
 		9328AF6A1D6616C700E6B0E2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9328AF691D6616C700E6B0E2 /* AppDelegate.swift */; };
 		9328AF6C1D6616C700E6B0E2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9328AF6B1D6616C700E6B0E2 /* ViewController.swift */; };
 		9328AF6F1D6616C700E6B0E2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9328AF6D1D6616C700E6B0E2 /* Main.storyboard */; };
 		9328AF711D6616C700E6B0E2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9328AF701D6616C700E6B0E2 /* Assets.xcassets */; };
-		9328AF741D6616C700E6B0E2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9328AF721D6616C700E6B0E2 /* LaunchScreen.storyboard */; };
 		9328AF7F1D6616C700E6B0E2 /* Gasteizko_MargolariakTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9328AF7E1D6616C700E6B0E2 /* Gasteizko_MargolariakTests.swift */; };
 		9328AF8A1D6616C700E6B0E2 /* Gasteizko_MargolariakUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9328AF891D6616C700E6B0E2 /* Gasteizko_MargolariakUITests.swift */; };
+		9338BE0D1D6B840D00D2735B /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9338BE0C1D6B840D00D2735B /* MainViewController.swift */; };
+		9338BE0F1D6B84D700D2735B /* SlideMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9338BE0E1D6B84D700D2735B /* SlideMenuController.swift */; };
+		9338BE121D6B8D9A00D2735B /* LeftViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9338BE101D6B8D9A00D2735B /* LeftViewController.swift */; };
+		9338BE151D6B8E3000D2735B /* ImageHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9338BE141D6B8E3000D2735B /* ImageHeaderView.swift */; };
+		93B05E291D6BA1EF00D909F9 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E281D6BA1EF00D909F9 /* HomeViewController.swift */; };
+		93B05E2B1D6BA23A00D909F9 /* LocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E2A1D6BA23A00D909F9 /* LocationViewController.swift */; };
+		93B05E2D1D6BA27200D909F9 /* LablancaViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E2C1D6BA27200D909F9 /* LablancaViewController.swift */; };
+		93B05E2F1D6BA29A00D909F9 /* ScheduleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E2E1D6BA29A00D909F9 /* ScheduleViewController.swift */; };
+		93B05E311D6BA2BD00D909F9 /* GmscheduleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E301D6BA2BD00D909F9 /* GmscheduleViewController.swift */; };
+		93B05E331D6BA2E600D909F9 /* ActivitiesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E321D6BA2E600D909F9 /* ActivitiesViewController.swift */; };
+		93B05E351D6BA30E00D909F9 /* BlogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E341D6BA30E00D909F9 /* BlogViewController.swift */; };
+		93B05E371D6BA33600D909F9 /* GalleryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E361D6BA33600D909F9 /* GalleryViewController.swift */; };
+		93B05E391D6BA35200D909F9 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B05E381D6BA35200D909F9 /* SettingsViewController.swift */; };
+		93B2BE831D6B8F05007CBED3 /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE7F1D6B8F05007CBED3 /* BaseTableViewCell.swift */; };
+		93B2BE971D6B8F9D007CBED3 /* DataTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE871D6B8F9C007CBED3 /* DataTableViewCell.swift */; };
+		93B2BE981D6B8F9D007CBED3 /* DataTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BE881D6B8F9C007CBED3 /* DataTableViewCell.xib */; };
+		93B2BE991D6B8F9D007CBED3 /* ExSlideMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE891D6B8F9C007CBED3 /* ExSlideMenuController.swift */; };
+		93B2BE9A1D6B8F9D007CBED3 /* ImageHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BE8A1D6B8F9C007CBED3 /* ImageHeaderView.xib */; };
+		93B2BE9B1D6B8F9D007CBED3 /* SlideMenuControllerSwift.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE8B1D6B8F9C007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */; };
+		93B2BE9C1D6B8F9D007CBED3 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE8D1D6B8F9D007CBED3 /* String.swift */; };
+		93B2BE9D1D6B8F9D007CBED3 /* SubContentsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BE8E1D6B8F9D007CBED3 /* SubContentsViewController.storyboard */; };
+		93B2BE9E1D6B8F9D007CBED3 /* SubContentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE8F1D6B8F9D007CBED3 /* SubContentsViewController.swift */; };
+		93B2BE9F1D6B8F9D007CBED3 /* UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE901D6B8F9D007CBED3 /* UIApplication.swift */; };
+		93B2BEA01D6B8F9D007CBED3 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE911D6B8F9D007CBED3 /* UIColor.swift */; };
+		93B2BEA11D6B8F9D007CBED3 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE921D6B8F9D007CBED3 /* UIImage.swift */; };
+		93B2BEA21D6B8F9D007CBED3 /* UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE931D6B8F9D007CBED3 /* UIImageView.swift */; };
+		93B2BEA31D6B8F9D007CBED3 /* UITableViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE941D6B8F9D007CBED3 /* UITableViewExtension.swift */; };
+		93B2BEA41D6B8F9D007CBED3 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE951D6B8F9D007CBED3 /* UIView.swift */; };
+		93B2BEA51D6B8F9D007CBED3 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BE961D6B8F9D007CBED3 /* UIViewController.swift */; };
+		93B2BEAC1D6B8FEA007CBED3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BEA61D6B8FEA007CBED3 /* Assets.xcassets */; };
+		93B2BEAD1D6B8FEA007CBED3 /* Base.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BEA71D6B8FEA007CBED3 /* Base.lproj */; };
+		93B2BEAE1D6B8FEA007CBED3 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93B2BEA81D6B8FEA007CBED3 /* Images.xcassets */; };
+		93B2BEB01D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 93B2BEAA1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -34,6 +67,7 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
+		9310BCBC1D6B9E4700C93AFA /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; path = res; sourceTree = "<group>"; };
 		9328AF661D6616C700E6B0E2 /* Gasteizko Margolariak.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Gasteizko Margolariak.app"; sourceTree = BUILT_PRODUCTS_DIR; };
 		9328AF691D6616C700E6B0E2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		9328AF6B1D6616C700E6B0E2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -47,6 +81,39 @@
 		9328AF851D6616C700E6B0E2 /* Gasteizko MargolariakUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Gasteizko MargolariakUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		9328AF891D6616C700E6B0E2 /* Gasteizko_MargolariakUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gasteizko_MargolariakUITests.swift; sourceTree = "<group>"; };
 		9328AF8B1D6616C700E6B0E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		9338BE0C1D6B840D00D2735B /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
+		9338BE0E1D6B84D700D2735B /* SlideMenuController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlideMenuController.swift; sourceTree = "<group>"; };
+		9338BE101D6B8D9A00D2735B /* LeftViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeftViewController.swift; sourceTree = "<group>"; };
+		9338BE141D6B8E3000D2735B /* ImageHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageHeaderView.swift; sourceTree = "<group>"; };
+		93B05E281D6BA1EF00D909F9 /* HomeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
+		93B05E2A1D6BA23A00D909F9 /* LocationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationViewController.swift; sourceTree = "<group>"; };
+		93B05E2C1D6BA27200D909F9 /* LablancaViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LablancaViewController.swift; sourceTree = "<group>"; };
+		93B05E2E1D6BA29A00D909F9 /* ScheduleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduleViewController.swift; sourceTree = "<group>"; };
+		93B05E301D6BA2BD00D909F9 /* GmscheduleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GmscheduleViewController.swift; sourceTree = "<group>"; };
+		93B05E321D6BA2E600D909F9 /* ActivitiesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivitiesViewController.swift; sourceTree = "<group>"; };
+		93B05E341D6BA30E00D909F9 /* BlogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlogViewController.swift; sourceTree = "<group>"; };
+		93B05E361D6BA33600D909F9 /* GalleryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GalleryViewController.swift; sourceTree = "<group>"; };
+		93B05E381D6BA35200D909F9 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; };
+		93B2BE7F1D6B8F05007CBED3 /* BaseTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = "<group>"; };
+		93B2BE871D6B8F9C007CBED3 /* DataTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataTableViewCell.swift; sourceTree = "<group>"; };
+		93B2BE881D6B8F9C007CBED3 /* DataTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DataTableViewCell.xib; sourceTree = "<group>"; };
+		93B2BE891D6B8F9C007CBED3 /* ExSlideMenuController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExSlideMenuController.swift; sourceTree = "<group>"; };
+		93B2BE8A1D6B8F9C007CBED3 /* ImageHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ImageHeaderView.xib; sourceTree = "<group>"; };
+		93B2BE8C1D6B8F9D007CBED3 /* SlideMenuControllerSwift.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = SlideMenuControllerSwift.xcdatamodel; sourceTree = "<group>"; };
+		93B2BE8D1D6B8F9D007CBED3 /* String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = "<group>"; };
+		93B2BE8E1D6B8F9D007CBED3 /* SubContentsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SubContentsViewController.storyboard; sourceTree = "<group>"; };
+		93B2BE8F1D6B8F9D007CBED3 /* SubContentsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubContentsViewController.swift; sourceTree = "<group>"; };
+		93B2BE901D6B8F9D007CBED3 /* UIApplication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIApplication.swift; sourceTree = "<group>"; };
+		93B2BE911D6B8F9D007CBED3 /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = "<group>"; };
+		93B2BE921D6B8F9D007CBED3 /* UIImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = "<group>"; };
+		93B2BE931D6B8F9D007CBED3 /* UIImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageView.swift; sourceTree = "<group>"; };
+		93B2BE941D6B8F9D007CBED3 /* UITableViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableViewExtension.swift; sourceTree = "<group>"; };
+		93B2BE951D6B8F9D007CBED3 /* UIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = "<group>"; };
+		93B2BE961D6B8F9D007CBED3 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = "<group>"; };
+		93B2BEA61D6B8FEA007CBED3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		93B2BEA71D6B8FEA007CBED3 /* Base.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Base.lproj; sourceTree = "<group>"; };
+		93B2BEA81D6B8FEA007CBED3 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+		93B2BEAB1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = SlideMenuControllerSwift.xcdatamodel; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -97,12 +164,46 @@
 		9328AF681D6616C700E6B0E2 /* Gasteizko Margolariak */ = {
 			isa = PBXGroup;
 			children = (
+				9310BCBC1D6B9E4700C93AFA /* res */,
+				93B2BEA61D6B8FEA007CBED3 /* Assets.xcassets */,
+				93B2BEA71D6B8FEA007CBED3 /* Base.lproj */,
+				93B2BEA81D6B8FEA007CBED3 /* Images.xcassets */,
+				93B2BEAA1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */,
+				93B2BE871D6B8F9C007CBED3 /* DataTableViewCell.swift */,
+				93B2BE881D6B8F9C007CBED3 /* DataTableViewCell.xib */,
+				93B2BE891D6B8F9C007CBED3 /* ExSlideMenuController.swift */,
+				93B2BE8A1D6B8F9C007CBED3 /* ImageHeaderView.xib */,
+				93B2BE8B1D6B8F9C007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */,
+				93B2BE8D1D6B8F9D007CBED3 /* String.swift */,
+				93B2BE8E1D6B8F9D007CBED3 /* SubContentsViewController.storyboard */,
+				93B2BE8F1D6B8F9D007CBED3 /* SubContentsViewController.swift */,
+				93B2BE901D6B8F9D007CBED3 /* UIApplication.swift */,
+				93B2BE911D6B8F9D007CBED3 /* UIColor.swift */,
+				93B2BE921D6B8F9D007CBED3 /* UIImage.swift */,
+				93B2BE931D6B8F9D007CBED3 /* UIImageView.swift */,
+				93B2BE941D6B8F9D007CBED3 /* UITableViewExtension.swift */,
+				93B2BE951D6B8F9D007CBED3 /* UIView.swift */,
+				93B2BE961D6B8F9D007CBED3 /* UIViewController.swift */,
+				93B2BE7F1D6B8F05007CBED3 /* BaseTableViewCell.swift */,
+				9338BE141D6B8E3000D2735B /* ImageHeaderView.swift */,
 				9328AF691D6616C700E6B0E2 /* AppDelegate.swift */,
+				9338BE101D6B8D9A00D2735B /* LeftViewController.swift */,
 				9328AF6B1D6616C700E6B0E2 /* ViewController.swift */,
+				9338BE0C1D6B840D00D2735B /* MainViewController.swift */,
+				93B05E361D6BA33600D909F9 /* GalleryViewController.swift */,
+				93B05E381D6BA35200D909F9 /* SettingsViewController.swift */,
+				93B05E341D6BA30E00D909F9 /* BlogViewController.swift */,
 				9328AF6D1D6616C700E6B0E2 /* Main.storyboard */,
 				9328AF701D6616C700E6B0E2 /* Assets.xcassets */,
 				9328AF721D6616C700E6B0E2 /* LaunchScreen.storyboard */,
 				9328AF751D6616C700E6B0E2 /* Info.plist */,
+				9338BE0E1D6B84D700D2735B /* SlideMenuController.swift */,
+				93B05E321D6BA2E600D909F9 /* ActivitiesViewController.swift */,
+				93B05E281D6BA1EF00D909F9 /* HomeViewController.swift */,
+				93B05E2A1D6BA23A00D909F9 /* LocationViewController.swift */,
+				93B05E2C1D6BA27200D909F9 /* LablancaViewController.swift */,
+				93B05E2E1D6BA29A00D909F9 /* ScheduleViewController.swift */,
+				93B05E301D6BA2BD00D909F9 /* GmscheduleViewController.swift */,
 			);
 			path = "Gasteizko Margolariak";
 			sourceTree = "<group>";
@@ -193,6 +294,7 @@
 				TargetAttributes = {
 					9328AF651D6616C700E6B0E2 = {
 						CreatedOnToolsVersion = 7.3.1;
+						DevelopmentTeam = B62ZJDY436;
 					};
 					9328AF791D6616C700E6B0E2 = {
 						CreatedOnToolsVersion = 7.3.1;
@@ -229,9 +331,15 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				9328AF741D6616C700E6B0E2 /* LaunchScreen.storyboard in Resources */,
+				9310BCBD1D6B9E4700C93AFA /* res in Resources */,
+				93B2BEAE1D6B8FEA007CBED3 /* Images.xcassets in Resources */,
+				93B2BE9A1D6B8F9D007CBED3 /* ImageHeaderView.xib in Resources */,
+				93B2BEAD1D6B8FEA007CBED3 /* Base.lproj in Resources */,
+				93B2BE9D1D6B8F9D007CBED3 /* SubContentsViewController.storyboard in Resources */,
 				9328AF711D6616C700E6B0E2 /* Assets.xcassets in Resources */,
+				93B2BEAC1D6B8FEA007CBED3 /* Assets.xcassets in Resources */,
 				9328AF6F1D6616C700E6B0E2 /* Main.storyboard in Resources */,
+				93B2BE981D6B8F9D007CBED3 /* DataTableViewCell.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -256,8 +364,35 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				93B05E371D6BA33600D909F9 /* GalleryViewController.swift in Sources */,
+				93B2BE9F1D6B8F9D007CBED3 /* UIApplication.swift in Sources */,
+				93B2BEA11D6B8F9D007CBED3 /* UIImage.swift in Sources */,
+				9338BE151D6B8E3000D2735B /* ImageHeaderView.swift in Sources */,
 				9328AF6C1D6616C700E6B0E2 /* ViewController.swift in Sources */,
+				93B05E2F1D6BA29A00D909F9 /* ScheduleViewController.swift in Sources */,
+				93B05E331D6BA2E600D909F9 /* ActivitiesViewController.swift in Sources */,
+				93B2BEA31D6B8F9D007CBED3 /* UITableViewExtension.swift in Sources */,
+				93B05E2B1D6BA23A00D909F9 /* LocationViewController.swift in Sources */,
+				9338BE0F1D6B84D700D2735B /* SlideMenuController.swift in Sources */,
+				93B2BEA41D6B8F9D007CBED3 /* UIView.swift in Sources */,
+				93B2BE831D6B8F05007CBED3 /* BaseTableViewCell.swift in Sources */,
 				9328AF6A1D6616C700E6B0E2 /* AppDelegate.swift in Sources */,
+				93B05E291D6BA1EF00D909F9 /* HomeViewController.swift in Sources */,
+				93B2BEA01D6B8F9D007CBED3 /* UIColor.swift in Sources */,
+				9338BE121D6B8D9A00D2735B /* LeftViewController.swift in Sources */,
+				93B05E2D1D6BA27200D909F9 /* LablancaViewController.swift in Sources */,
+				93B2BEA51D6B8F9D007CBED3 /* UIViewController.swift in Sources */,
+				93B2BEB01D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodeld in Sources */,
+				93B2BE9E1D6B8F9D007CBED3 /* SubContentsViewController.swift in Sources */,
+				93B05E351D6BA30E00D909F9 /* BlogViewController.swift in Sources */,
+				93B2BE991D6B8F9D007CBED3 /* ExSlideMenuController.swift in Sources */,
+				93B2BE9B1D6B8F9D007CBED3 /* SlideMenuControllerSwift.xcdatamodeld in Sources */,
+				9338BE0D1D6B840D00D2735B /* MainViewController.swift in Sources */,
+				93B2BEA21D6B8F9D007CBED3 /* UIImageView.swift in Sources */,
+				93B05E391D6BA35200D909F9 /* SettingsViewController.swift in Sources */,
+				93B2BE9C1D6B8F9D007CBED3 /* String.swift in Sources */,
+				93B2BE971D6B8F9D007CBED3 /* DataTableViewCell.swift in Sources */,
+				93B05E311D6BA2BD00D909F9 /* GmscheduleViewController.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -401,10 +536,14 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				INFOPLIST_FILE = "Gasteizko Margolariak/Info.plist";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				"OTHER_CODE_SIGN_FLAGS[sdk=*]" = "--deep";
 				PRODUCT_BUNDLE_IDENTIFIER = "com.gm.Gasteizko-Margolariak";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
 			};
 			name = Debug;
 		};
@@ -412,10 +551,14 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				INFOPLIST_FILE = "Gasteizko Margolariak/Info.plist";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				"OTHER_CODE_SIGN_FLAGS[sdk=*]" = "--deep";
 				PRODUCT_BUNDLE_IDENTIFIER = "com.gm.Gasteizko-Margolariak";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
 			};
 			name = Release;
 		};
@@ -484,6 +627,7 @@
 				9328AF901D6616C700E6B0E2 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 		9328AF911D6616C700E6B0E2 /* Build configuration list for PBXNativeTarget "Gasteizko MargolariakTests" */ = {
 			isa = XCConfigurationList;
@@ -492,6 +636,7 @@
 				9328AF931D6616C700E6B0E2 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 		9328AF941D6616C700E6B0E2 /* Build configuration list for PBXNativeTarget "Gasteizko MargolariakUITests" */ = {
 			isa = XCConfigurationList;
@@ -500,8 +645,32 @@
 				9328AF961D6616C700E6B0E2 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
+
+/* Begin XCVersionGroup section */
+		93B2BE8B1D6B8F9C007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */ = {
+			isa = XCVersionGroup;
+			children = (
+				93B2BE8C1D6B8F9D007CBED3 /* SlideMenuControllerSwift.xcdatamodel */,
+			);
+			currentVersion = 93B2BE8C1D6B8F9D007CBED3 /* SlideMenuControllerSwift.xcdatamodel */;
+			path = SlideMenuControllerSwift.xcdatamodeld;
+			sourceTree = "<group>";
+			versionGroupType = wrapper.xcdatamodel;
+		};
+		93B2BEAA1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodeld */ = {
+			isa = XCVersionGroup;
+			children = (
+				93B2BEAB1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodel */,
+			);
+			currentVersion = 93B2BEAB1D6B8FEA007CBED3 /* SlideMenuControllerSwift.xcdatamodel */;
+			path = SlideMenuControllerSwift.xcdatamodeld;
+			sourceTree = "<group>";
+			versionGroupType = wrapper.xcdatamodel;
+		};
+/* End XCVersionGroup section */
 	};
 	rootObject = 9328AF5E1D6616C700E6B0E2 /* Project object */;
 }

+ 22 - 0
Gasteizko Margolariak/ActivitiesViewController.swift

@@ -0,0 +1,22 @@
+//
+//  ActivitiesViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class ActivitiesViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 112 - 14
Gasteizko Margolariak/AppDelegate.swift

@@ -1,46 +1,144 @@
 //
 //  AppDelegate.swift
-//  Gasteizko Margolariak
+//  test11
 //
-//  Created by Inigo Valentin on 18/08/16.
-//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//  Created by Yuji Hato on 4/20/15.
+//  Copyright (c) 2015 Yuji Hato. All rights reserved.
 //
 
 import UIKit
+import CoreData
 
 @UIApplicationMain
 class AppDelegate: UIResponder, UIApplicationDelegate {
-
+    
     var window: UIWindow?
-
-
+    
+    private func createMenuView() {
+        
+        // create viewController code...
+        let storyboard = UIStoryboard(name: "Main", bundle: nil)
+        
+        let mainViewController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") as! MainViewController
+        let leftViewController = storyboard.instantiateViewControllerWithIdentifier("LeftViewController") as! LeftViewController
+        
+        let nvc: UINavigationController = UINavigationController(rootViewController: mainViewController)
+        
+        UINavigationBar.appearance().tintColor = UIColor(hex: "689F38")
+        
+        leftViewController.mainViewController = nvc
+        
+        let slideMenuController = ExSlideMenuController(mainViewController:nvc, leftMenuViewController: leftViewController)
+        slideMenuController.automaticallyAdjustsScrollViewInsets = true
+        slideMenuController.delegate = mainViewController
+        self.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0)
+        self.window?.rootViewController = slideMenuController
+        self.window?.makeKeyAndVisible()
+    }
+    
     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
-        // Override point for customization after application launch.
+        
+        self.createMenuView()
+        
         return true
     }
-
+    
     func applicationWillResignActive(application: UIApplication) {
         // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
         // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
     }
-
+    
     func applicationDidEnterBackground(application: UIApplication) {
         // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
         // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
     }
-
+    
     func applicationWillEnterForeground(application: UIApplication) {
         // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
     }
-
+    
     func applicationDidBecomeActive(application: UIApplication) {
         // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     }
-
+    
     func applicationWillTerminate(application: UIApplication) {
         // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+        // Saves changes in the application's managed object context before the application terminates.
+        self.saveContext()
     }
-
-
+    
+    // MARK: - Core Data stack
+    
+    lazy var applicationDocumentsDirectory: NSURL = {
+        // The directory the application uses to store the Core Data store file. This code uses a directory named "dekatotoro.test11" in the application's documents Application Support directory.
+        let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
+        return urls[urls.count-1] 
+        }()
+    
+    lazy var managedObjectModel: NSManagedObjectModel = {
+        // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model.
+        let modelURL = NSBundle.mainBundle().URLForResource("test11", withExtension: "momd")!
+        return NSManagedObjectModel(contentsOfURL: modelURL)!
+        }()
+    
+    lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
+        // The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
+        // Create the coordinator and store
+        var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
+        let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("test11.sqlite")
+        var error: NSError? = nil
+        var failureReason = "There was an error creating or loading the application's saved data."
+        do {
+            try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
+        } catch var error1 as NSError {
+            error = error1
+            coordinator = nil
+            // Report any error we got.
+            var dict = [String: AnyObject]()
+            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
+            dict[NSLocalizedFailureReasonErrorKey] = failureReason
+            dict[NSUnderlyingErrorKey] = error
+            error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
+            // Replace this with code to handle the error appropriately.
+            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
+            NSLog("Unresolved error \(error), \(error!.userInfo)")
+            abort()
+        } catch {
+            fatalError()
+        }
+        
+        return coordinator
+        }()
+    
+    lazy var managedObjectContext: NSManagedObjectContext? = {
+        // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
+        let coordinator = self.persistentStoreCoordinator
+        if coordinator == nil {
+            return nil
+        }
+        var managedObjectContext = NSManagedObjectContext()
+        managedObjectContext.persistentStoreCoordinator = coordinator
+        return managedObjectContext
+        }()
+    
+    // MARK: - Core Data Saving support
+    
+    func saveContext () {
+        if let moc = self.managedObjectContext {
+            var error: NSError? = nil
+            if moc.hasChanges {
+                do {
+                    try moc.save()
+                } catch let error1 as NSError {
+                    error = error1
+                    // Replace this implementation with code to handle the error appropriately.
+                    // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
+                    NSLog("Unresolved error \(error), \(error!.userInfo)")
+                    abort()
+                }
+            }
+        }
+    }
+    
 }
 

+ 30 - 12
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,63 +1,81 @@
 {
   "images" : [
     {
-      "idiom" : "iphone",
       "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "logo.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "iphone",
       "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "logo-1.png",
       "scale" : "3x"
     },
     {
-      "idiom" : "iphone",
       "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "logo-2.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "iphone",
       "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "logo-3.png",
       "scale" : "3x"
     },
     {
-      "idiom" : "iphone",
       "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "logo-4.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "iphone",
       "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "logo-5.png",
       "scale" : "3x"
     },
     {
-      "idiom" : "ipad",
       "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "logo-6.png",
       "scale" : "1x"
     },
     {
-      "idiom" : "ipad",
       "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "logo-7.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "ipad",
       "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "logo-8.png",
       "scale" : "1x"
     },
     {
-      "idiom" : "ipad",
       "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "logo-9.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "ipad",
       "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "logo-10.png",
       "scale" : "1x"
     },
     {
-      "idiom" : "ipad",
       "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "logo-11.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "logo-12.png",
       "scale" : "2x"
     }
   ],

二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-1.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-10.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-11.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-12.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-2.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-3.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-4.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-5.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-6.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-7.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-8.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo-9.png


二进制
Gasteizko Margolariak/Assets.xcassets/AppIcon.appiconset/logo.png


+ 0 - 27
Gasteizko Margolariak/Base.lproj/LaunchScreen.storyboard

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8150" systemVersion="15A204g" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
-    <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8122"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="EHf-IW-A2E">
-            <objects>
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
-                    <layoutGuides>
-                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
-                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
-                    </layoutGuides>
-                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
-                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <animations/>
-                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="53" y="375"/>
-        </scene>
-    </scenes>
-</document>

+ 42 - 0
Gasteizko Margolariak/Base.lproj/LaunchScreen.xib

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6254" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6247"/>
+        <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  Copyright (c) 2014 Yuji Hato. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
+                    <rect key="frame" x="20" y="439" width="441" height="20.5"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" text="SlideMenuControllerSwift" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
+                    <rect key="frame" x="20" y="140" width="441" height="43"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
+                    <color key="textColor" red="0.92549019607843142" green="0.93333333333333335" blue="0.94509803921568625" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
+                <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
+                <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
+                <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
+                <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
+                <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
+            </constraints>
+            <nil key="simulatedStatusBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="548" y="455"/>
+        </view>
+    </objects>
+</document>

+ 255 - 5
Gasteizko Margolariak/Base.lproj/Main.storyboard

@@ -1,13 +1,88 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
     </dependencies>
     <scenes>
-        <!--View Controller-->
+        <!--Right View Controller-->
+        <scene sceneID="bvR-W9-qnC">
+            <objects>
+                <viewController storyboardIdentifier="RightViewController" id="In8-Mc-X7I" customClass="RightViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Uwi-SA-NOq"/>
+                        <viewControllerLayoutGuide type="bottom" id="wFn-Mp-0fQ"/>
+                    </layoutGuides>
+                    <view key="view" alpha="0.90000000000000002" contentMode="scaleToFill" id="Ltp-Uh-d7b">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RightViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1cV-XC-cqE">
+                                <rect key="frame" x="180" y="100" width="240" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="240" id="1Eb-kX-mSr"/>
+                                    <constraint firstAttribute="height" constant="93" id="JXD-Xz-JaB"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784313725492" green="0.61960784313725492" blue="0.61960784313725492" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94509803921568625" green="0.97254901960784312" blue="0.9137254901960784" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="centerX" secondItem="1cV-XC-cqE" secondAttribute="centerX" id="Q8n-ib-5xp"/>
+                            <constraint firstItem="1cV-XC-cqE" firstAttribute="top" secondItem="Uwi-SA-NOq" secondAttribute="bottom" constant="80" id="nB2-pu-mht"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="PvU-KF-Szg" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="139" y="-1196"/>
+        </scene>
+        <!--Left View Controller-->
+        <scene sceneID="Nq8-8X-A5v">
+            <objects>
+                <viewController storyboardIdentifier="LeftViewController" id="Mog-8S-rDV" customClass="LeftViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="ojD-hk-v0s"/>
+                        <viewControllerLayoutGuide type="bottom" id="hXM-FI-ON0"/>
+                    </layoutGuides>
+                    <view key="view" alpha="0.90000000000000002" contentMode="scaleToFill" id="REJ-n5-19V">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="tZ8-EX-Dgz">
+                                <rect key="frame" x="0.0" y="160" width="600" height="440"/>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                <color key="sectionIndexBackgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                <connections>
+                                    <outlet property="dataSource" destination="Mog-8S-rDV" id="H0W-OR-4JG"/>
+                                    <outlet property="delegate" destination="Mog-8S-rDV" id="9co-7s-CEv"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94509803921568625" green="0.97254901960784312" blue="0.9137254901960784" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstItem="hXM-FI-ON0" firstAttribute="top" secondItem="tZ8-EX-Dgz" secondAttribute="bottom" id="JJj-IC-vli"/>
+                            <constraint firstItem="tZ8-EX-Dgz" firstAttribute="top" secondItem="REJ-n5-19V" secondAttribute="top" constant="160" id="K0e-FY-E01"/>
+                            <constraint firstAttribute="trailing" secondItem="tZ8-EX-Dgz" secondAttribute="trailing" id="g5C-cu-sdP"/>
+                            <constraint firstItem="tZ8-EX-Dgz" firstAttribute="leading" secondItem="REJ-n5-19V" secondAttribute="leading" id="pzK-e6-Yy4"/>
+                        </constraints>
+                    </view>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <size key="freeformSize" width="600" height="600"/>
+                    <connections>
+                        <outlet property="tableView" destination="tZ8-EX-Dgz" id="Q4I-bN-BsR"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="JrB-Wy-sfE" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="139" y="-538"/>
+        </scene>
+        <!--Main View Controller-->
         <scene sceneID="tne-QT-ifu">
             <objects>
-                <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
+                <viewController storyboardIdentifier="MainViewController" id="BYZ-38-t0r" customClass="MainViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
                     <layoutGuides>
                         <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                         <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
@@ -15,11 +90,186 @@
                     <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="MNw-nN-8ak">
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                                <color key="backgroundColor" red="0.89411764705882357" green="0.9137254901960784" blue="0.9137254901960784" alpha="1" colorSpace="calibratedRGB"/>
+                                <connections>
+                                    <outlet property="dataSource" destination="BYZ-38-t0r" id="v6M-NJ-qDu"/>
+                                    <outlet property="delegate" destination="BYZ-38-t0r" id="yky-PA-Jge"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.89411764705882357" green="0.9137254901960784" blue="0.9137254901960784" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="MNw-nN-8ak" secondAttribute="trailing" id="0gj-9S-3k5"/>
+                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="MNw-nN-8ak" secondAttribute="bottom" id="47o-gV-Kd1"/>
+                            <constraint firstItem="MNw-nN-8ak" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="top" id="xbT-am-qCO"/>
+                            <constraint firstItem="MNw-nN-8ak" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="zcu-wF-y35"/>
+                        </constraints>
                     </view>
+                    <connections>
+                        <outlet property="tableView" destination="MNw-nN-8ak" id="OEx-Z5-027"/>
+                    </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
             </objects>
         </scene>
+        <!--Home View Controller-->
+        <scene sceneID="qDe-KX-ho1">
+            <objects>
+                <viewController storyboardIdentifier="HomeViewController" id="I9w-x4-mAi" customClass="HomeViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="jtW-TN-dF4"/>
+                        <viewControllerLayoutGuide type="bottom" id="2n0-fL-47k"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="FDk-dB-c3B">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SwiftViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bao-vm-zME">
+                                <rect key="frame" x="180" y="100" width="240" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="93" id="dAY-to-35w"/>
+                                    <constraint firstAttribute="width" constant="240" id="suh-ng-jJw"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784313725492" green="0.61960784313725492" blue="0.61960784313725492" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.89411764705882357" green="0.9137254901960784" blue="0.9137254901960784" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstItem="Bao-vm-zME" firstAttribute="top" secondItem="jtW-TN-dF4" secondAttribute="bottom" constant="80" id="Byq-zF-AOE"/>
+                            <constraint firstAttribute="centerX" secondItem="Bao-vm-zME" secondAttribute="centerX" id="jGK-wg-NME"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="Wgh-E1-vlx"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="0gN-ZX-EvU" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="118" y="1437"/>
+        </scene>
+        <!--Location View Controller-->
+        <scene sceneID="4cK-mI-MCG">
+            <objects>
+                <viewController storyboardIdentifier="JavaViewController" id="TvI-C9-lSF" customClass="LocationViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="qOh-Be-bJ9"/>
+                        <viewControllerLayoutGuide type="bottom" id="yPA-d7-Ile"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="39x-FM-ldd">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="JavaViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yNk-jI-vWu">
+                                <rect key="frame" x="180" y="100" width="240" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="240" id="0CF-AY-wRd"/>
+                                    <constraint firstAttribute="height" constant="93" id="sHD-pg-Gth"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784313725492" green="0.61960784313725492" blue="0.61960784313725492" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.89411764709999997" green="0.91764705879999997" blue="0.91372549020000005" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="centerX" secondItem="yNk-jI-vWu" secondAttribute="centerX" id="S8p-PB-WbI"/>
+                            <constraint firstItem="yNk-jI-vWu" firstAttribute="top" secondItem="qOh-Be-bJ9" secondAttribute="bottom" constant="80" id="rVG-4D-zNp"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="UKp-kY-PgV"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="cuQ-Rg-TRe" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="130" y="789"/>
+        </scene>
+        <!--Go View Controller-->
+        <scene sceneID="adq-KJ-u5Z">
+            <objects>
+                <viewController storyboardIdentifier="GoViewController" id="pwN-Wv-Ioh" customClass="GoViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="QEC-CO-vAa"/>
+                        <viewControllerLayoutGuide type="bottom" id="4w6-Ph-vE3"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="IWZ-ke-U66">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GoViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FLU-tD-9hd">
+                                <rect key="frame" x="180" y="100" width="240" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="240" id="2Im-Ws-XXN"/>
+                                    <constraint firstAttribute="height" constant="93" id="Khy-MB-kUI"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784313725492" green="0.61960784313725492" blue="0.61960784313725492" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.89411764709999997" green="0.91764705879999997" blue="0.91372549020000005" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="centerX" secondItem="FLU-tD-9hd" secondAttribute="centerX" id="OK6-xv-drL"/>
+                            <constraint firstItem="FLU-tD-9hd" firstAttribute="top" secondItem="QEC-CO-vAa" secondAttribute="bottom" constant="80" id="lWl-Qb-09v"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="Wve-YG-p0e"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="R0Q-i3-kfU" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="130" y="2189"/>
+        </scene>
+        <!--Non Menu Controller-->
+        <scene sceneID="d7w-0k-xlq">
+            <objects>
+                <viewController storyboardIdentifier="NonMenuController" id="dnB-Mf-802" customClass="NonMenuController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="P9h-CD-Kay"/>
+                        <viewControllerLayoutGuide type="bottom" id="2A9-xu-LZI"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="oal-zY-YFo">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="NonMenuViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JkU-sV-rei">
+                                <rect key="frame" x="180" y="100" width="240" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="93" id="2gF-jm-4sT"/>
+                                    <constraint firstAttribute="width" constant="240" id="wCd-8x-XSL"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784313725492" green="0.61960784313725492" blue="0.61960784313725492" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="16p-Vu-lJM">
+                                <rect key="frame" x="215" y="233" width="171" height="52"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="171" id="UWh-CV-hrv"/>
+                                    <constraint firstAttribute="height" constant="52" id="b02-Ff-xxQ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="To MainViewController">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="didTouchToMain:" destination="dnB-Mf-802" eventType="touchUpInside" id="j5j-YU-q6R"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" red="0.68235294117647061" green="0.83529411764705885" blue="0.50588235294117645" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstItem="JkU-sV-rei" firstAttribute="top" secondItem="P9h-CD-Kay" secondAttribute="bottom" constant="80" id="LyY-xm-DXa"/>
+                            <constraint firstAttribute="centerX" secondItem="16p-Vu-lJM" secondAttribute="centerX" id="Yma-zi-uRA"/>
+                            <constraint firstItem="16p-Vu-lJM" firstAttribute="top" secondItem="JkU-sV-rei" secondAttribute="bottom" constant="40" id="cnu-0z-deg"/>
+                            <constraint firstAttribute="centerX" secondItem="JkU-sV-rei" secondAttribute="centerX" id="yD5-kY-Rho"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="BqV-Y1-lxd" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="138" y="2864"/>
+        </scene>
     </scenes>
 </document>

+ 57 - 0
Gasteizko Margolariak/BaseTableViewCell.swift

@@ -0,0 +1,57 @@
+//
+//  BaseTableViewCell.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 2016-08-23
+//  Copyright © 2016 Inigo Valentin. All rights reserved.
+//
+//  Based on the work of Yuji Hato.
+//
+
+import UIKit
+
+public class BaseTableViewCell : UITableViewCell {
+    class var identifier: String { return String.className(self) }
+    
+    public required init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+        setup()
+    }
+    
+    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
+        super.init(style: style, reuseIdentifier: reuseIdentifier)
+        setup()
+    }
+    
+    public override func awakeFromNib() {
+    }
+    
+    public func setup() {
+    }
+    
+    public class func height() -> CGFloat {
+        return 48
+    }
+    
+    public func setData(data: Any?) {
+        self.backgroundColor = UIColor(hex: "3344ff")
+        self.textLabel?.font = UIFont.italicSystemFontOfSize(18)
+        self.textLabel?.textColor = UIColor(hex: "000000")
+        if let menuText = data as? String {
+            self.textLabel?.text = menuText
+        }
+    }
+    
+    override public func setHighlighted(highlighted: Bool, animated: Bool) {
+        if highlighted {
+            self.alpha = 0.4
+        } else {
+            self.alpha = 1.0
+        }
+    }
+    
+    // ignore the default handling
+    override public func setSelected(selected: Bool, animated: Bool) {
+    }
+  
+}

+ 21 - 0
Gasteizko Margolariak/BlogViewController.swift

@@ -0,0 +1,21 @@
+//
+//  BlogViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+import UIKit
+
+class BlogViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 43 - 0
Gasteizko Margolariak/DataTableViewCell.swift

@@ -0,0 +1,43 @@
+//
+//  DataTableViewCell.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 2016-08-23
+//  Copyright © 2016 Inigo Valentin. All rights reserved.
+//
+//  Based on the work of Yuji Hato.
+//
+
+import UIKit
+
+struct DataTableViewCellData {
+    
+    init(imageUrl: String, text: String) {
+        self.imageUrl = imageUrl
+        self.text = text
+    }
+    var imageUrl: String
+    var text: String
+}
+
+class DataTableViewCell : BaseTableViewCell {
+    
+    @IBOutlet weak var dataImage: UIImageView!
+    @IBOutlet weak var dataText: UILabel!
+    
+    override func awakeFromNib() {
+        self.dataText?.font = UIFont.italicSystemFontOfSize(16)
+        self.dataText?.textColor = UIColor(hex: "9E9E9E")
+    }
+ 
+    override class func height() -> CGFloat {
+        return 80
+    }
+    
+    override func setData(data: Any?) {
+        if let data = data as? DataTableViewCellData {
+            self.dataImage.setRandomDownloadImage(80, height: 80)
+            self.dataText.text = data.text
+        }
+    }
+}

+ 54 - 0
Gasteizko Margolariak/DataTableViewCell.xib

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="c3H-ux-4zZ" customClass="DataTableViewCell" customModule="SlideMenuControllerSwift" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="80"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="c3H-ux-4zZ" id="eWK-b2-p7R">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="79.5"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ppM-43-tik">
+                        <rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
+                        <animations/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="80" id="osB-9J-1ls"/>
+                            <constraint firstAttribute="width" constant="80" id="wNA-oV-Ceo"/>
+                        </constraints>
+                    </imageView>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I30-9I-EnW">
+                        <rect key="frame" x="88" y="19" width="224" height="42"/>
+                        <animations/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="42" id="tMX-bK-3QC"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+                <animations/>
+                <constraints>
+                    <constraint firstItem="I30-9I-EnW" firstAttribute="leading" secondItem="ppM-43-tik" secondAttribute="trailing" constant="8" id="0sI-CM-qrq"/>
+                    <constraint firstItem="I30-9I-EnW" firstAttribute="centerY" secondItem="eWK-b2-p7R" secondAttribute="centerY" id="CC8-Ve-GEE"/>
+                    <constraint firstItem="ppM-43-tik" firstAttribute="top" secondItem="eWK-b2-p7R" secondAttribute="top" id="Ejt-ht-YfW"/>
+                    <constraint firstItem="ppM-43-tik" firstAttribute="leading" secondItem="eWK-b2-p7R" secondAttribute="leading" id="c9f-ya-sBc"/>
+                    <constraint firstAttribute="trailing" secondItem="I30-9I-EnW" secondAttribute="trailing" constant="8" id="rG9-lK-Ze8"/>
+                </constraints>
+            </tableViewCellContentView>
+            <animations/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+            <connections>
+                <outlet property="dataImage" destination="ppM-43-tik" id="xdO-QO-GUo"/>
+                <outlet property="dataText" destination="I30-9I-EnW" id="vsj-dK-z9n"/>
+            </connections>
+            <point key="canvasLocation" x="249" y="183"/>
+        </tableViewCell>
+    </objects>
+</document>

+ 32 - 0
Gasteizko Margolariak/ExSlideMenuController.swift

@@ -0,0 +1,32 @@
+//
+//  ExSlideMenuController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 2016-08-23
+//  Copyright © 2016 Inigo Valentin. All rights reserved.
+//
+//  Based on the work of Yuji Hato.
+//
+
+import UIKit
+
+class ExSlideMenuController : SlideMenuController {
+
+    override func isTagetViewController() -> Bool {
+        if let vc = UIApplication.topViewController() {
+            if vc is MainViewController ||
+            vc is HomeViewController ||
+            vc is LocationViewController ||
+            vc is LablancaViewController ||
+            vc is ScheduleViewController ||
+            vc is GmscheduleViewController ||
+            vc is ActivitiesViewController ||
+            vc is BlogViewController ||
+            vc is GalleryViewController ||
+            vc is SettingsViewController {
+                return true
+            }
+        }
+        return false
+    }
+}

+ 21 - 0
Gasteizko Margolariak/GalleryViewController.swift

@@ -0,0 +1,21 @@
+//
+//  GalleryViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+import UIKit
+
+class GalleryViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 22 - 0
Gasteizko Margolariak/GmscheduleViewController.swift

@@ -0,0 +1,22 @@
+//
+//  GmscheduleViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class GmscheduleViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 22 - 0
Gasteizko Margolariak/HomeViewController.swift

@@ -0,0 +1,22 @@
+//
+//  HomeViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class HomeViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 26 - 0
Gasteizko Margolariak/ImageHeaderView.swift

@@ -0,0 +1,26 @@
+//
+//  ImageHeaderCell.swift
+//  SlideMenuControllerSwift
+//
+//  Created by Yuji Hato on 11/3/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+class ImageHeaderView : UIView {
+    
+    @IBOutlet weak var profileImage : UIImageView!
+    @IBOutlet weak var backgroundImage : UIImageView!
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        self.backgroundColor = UIColor(hex: "E0E0E0")
+        self.profileImage.layer.cornerRadius = self.profileImage.frame.size.height / 2
+        self.profileImage.clipsToBounds = true
+        self.profileImage.layer.borderWidth = 1
+        self.profileImage.layer.borderColor = UIColor.whiteColor().CGColor
+        self.profileImage.setRandomDownloadImage(80, height: 80)
+        self.backgroundImage.setRandomDownloadImage(Int(self.frame.size.width), height: 160)
+    }
+}

+ 42 - 0
Gasteizko Margolariak/ImageHeaderView.xib

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" userLabel="Image Header View" customClass="ImageHeaderView" customModule="Gasteizko_Margolariak" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="160"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="crj-Qs-Xeq">
+                    <rect key="frame" x="0.0" y="0.0" width="320" height="160"/>
+                </imageView>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="KsU-S4-hhE">
+                    <rect key="frame" x="8" y="72" width="80" height="80"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="80" id="THq-40-VhC"/>
+                        <constraint firstAttribute="width" constant="80" id="Vdp-yI-A0R"/>
+                    </constraints>
+                </imageView>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="crj-Qs-Xeq" secondAttribute="bottom" id="2GQ-0j-7zw"/>
+                <constraint firstAttribute="trailing" secondItem="crj-Qs-Xeq" secondAttribute="trailing" id="CEW-Ct-L8O"/>
+                <constraint firstItem="crj-Qs-Xeq" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Guc-J3-ibn"/>
+                <constraint firstAttribute="bottom" secondItem="KsU-S4-hhE" secondAttribute="bottom" constant="8" id="Kff-vI-5XQ"/>
+                <constraint firstItem="crj-Qs-Xeq" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="S4z-uS-qaB"/>
+                <constraint firstItem="KsU-S4-hhE" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="8" id="cn0-Hd-iVZ"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="backgroundImage" destination="crj-Qs-Xeq" id="s6z-e0-bbb"/>
+                <outlet property="profileImage" destination="KsU-S4-hhE" id="C8u-Fp-ZfO"/>
+            </connections>
+            <point key="canvasLocation" x="255" y="192"/>
+        </view>
+    </objects>
+</document>

+ 73 - 0
Gasteizko Margolariak/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,73 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "29x29",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "29x29",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "40x40",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "40x40",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "76x76",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "76x76",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "83.5x83.5",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 23 - 0
Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "ic_menu_black_24dp.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_menu_black_24dp@2x.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x",
+      "filename" : "ic_menu_black_24dp@3x.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

二进制
Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp.png


二进制
Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp@2x.png


二进制
Gasteizko Margolariak/Images.xcassets/ic_menu_black_24dp.imageset/ic_menu_black_24dp@3x.png


+ 23 - 0
Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "ic_notifications_black_24dp.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_notifications_black_24dp@2x.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x",
+      "filename" : "ic_notifications_black_24dp@3x.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

二进制
Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp.png


二进制
Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp@2x.png


二进制
Gasteizko Margolariak/Images.xcassets/ic_notifications_black_24dp.imageset/ic_notifications_black_24dp@3x.png


+ 4 - 1
Gasteizko Margolariak/Info.plist

@@ -23,7 +23,7 @@
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>UILaunchStoryboardName</key>
-	<string>LaunchScreen</string>
+	<string>Main</string>
 	<key>UIMainStoryboardFile</key>
 	<string>Main</string>
 	<key>UIRequiredDeviceCapabilities</key>
@@ -33,6 +33,9 @@
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
 	</array>
 	<key>UISupportedInterfaceOrientations~ipad</key>
 	<array>

+ 22 - 0
Gasteizko Margolariak/LablancaViewController.swift

@@ -0,0 +1,22 @@
+//
+//  LablancaViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class LablancaViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 138 - 0
Gasteizko Margolariak/LeftViewController.swift

@@ -0,0 +1,138 @@
+//
+//  LeftViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 2016-08-23
+//  Copyright © 2016 Inigo Valentin. All rights reserved.
+//
+//  Based on the work of Yuji Hato.
+//
+
+import UIKit
+
+enum LeftMenu: Int {
+    case Main = 0
+    case Home
+    case Location
+    case Lablanca
+    case Schedule
+    case Gmschedule
+    case Activities
+    case Blog
+    case Gallery
+    case Settings
+}
+
+protocol LeftMenuProtocol : class {
+    func changeViewController(menu: LeftMenu)
+}
+
+class LeftViewController : UIViewController, LeftMenuProtocol {
+    
+    @IBOutlet weak var tableView: UITableView!
+    var menus = ["Home", "Localizacion", "La Blanca", "Programa de Fiestas", "Programa Margolari", "Actividades", "Blog", "Galeria", "Ajustes"]
+    var mainViewController: UIViewController!
+    var homeViewController: UIViewController!
+    var locationViewController: UIViewController!
+    var lablancaViewController: UIViewController!
+    var scheduleViewController: UIViewController!
+    var gmsccheduleViewController: UIViewController!
+    var activitiesViewController: UIViewController!
+    var blogViewController: UIViewController!
+    var galleryViewController: UIViewController!
+    var settingsViewController: UIViewController!
+    
+    var imageHeaderView: ImageHeaderView!
+    
+    required init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+    }
+   
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.tableView.separatorColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1.0)
+        
+        let storyboard = UIStoryboard(name: "Main", bundle: nil)
+        
+        let homeViewController = storyboard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
+        self.homeViewController = UINavigationController(rootViewController: homeViewController)
+        
+        
+        
+        self.tableView.registerCellClass(BaseTableViewCell.self)
+        
+        self.imageHeaderView = ImageHeaderView.loadNib()
+        self.view.addSubview(self.imageHeaderView)
+    }
+    
+    override func viewDidAppear(animated: Bool) {
+        super.viewDidAppear(animated)
+    }
+    
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
+        self.imageHeaderView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 160)
+        self.view.layoutIfNeeded()
+    }
+    
+    func changeViewController(menu: LeftMenu) {
+        switch menu {
+        case .Main:
+            self.slideMenuController()?.changeMainViewController(self.mainViewController, close: true)
+        case .Home:
+            self.slideMenuController()?.changeMainViewController(self.homeViewController, close: true)
+        default: //Delete default
+            self.slideMenuController()?.changeMainViewController(self.homeViewController, close: true)
+
+
+        }
+    }
+}
+
+extension LeftViewController : UITableViewDelegate {
+    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
+        if let menu = LeftMenu(rawValue: indexPath.item) {
+            switch menu {
+            case .Main, .Home, .Location, .Lablanca, .Schedule, .Gmschedule, .Activities, .Blog, .Gallery, .Settings:
+                return BaseTableViewCell.height()
+            }
+        }
+        return 0
+    }
+}
+
+extension LeftViewController : UITableViewDataSource {
+    
+    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return menus.count
+    }
+
+    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        
+        if let menu = LeftMenu(rawValue: indexPath.item) {
+            switch menu {
+            case .Main, .Home, .Location, .Lablanca, .Schedule, .Gmschedule, .Activities, .Blog, .Gallery, .Settings:
+                let cell = BaseTableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: BaseTableViewCell.identifier)
+                cell.setData(menus[indexPath.row])
+                return cell
+            }
+        }
+        return UITableViewCell()
+    }
+    
+    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+        if let menu = LeftMenu(rawValue: indexPath.item) {
+            self.changeViewController(menu)
+        }
+    }
+}
+
+extension LeftViewController: UIScrollViewDelegate {
+    
+    
+    func scrollViewDidScroll(scrollView: UIScrollView) {
+        if self.tableView == scrollView {
+            
+        }
+    }
+}

+ 22 - 0
Gasteizko Margolariak/LocationViewController.swift

@@ -0,0 +1,22 @@
+//
+//  LocationViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class LocationViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 95 - 0
Gasteizko Margolariak/MainViewController.swift

@@ -0,0 +1,95 @@
+//
+//  ViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 12/3/14.
+//
+
+import UIKit
+
+class MainViewController: UIViewController {
+
+    @IBOutlet weak var tableView: UITableView!
+    
+    var mainContens = ["data1", "data2", "data3", "data4", "data5", "data6", "data7", "data8", "data9", "data10", "data11", "data12", "data13", "data14", "data15"]
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.tableView.registerCellNib(DataTableViewCell.self)
+    }
+    
+    override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
+        super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+
+    override func didReceiveMemoryWarning() {
+        super.didReceiveMemoryWarning()
+    }
+
+}
+
+
+extension MainViewController : UITableViewDelegate {
+    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
+        return DataTableViewCell.height()
+    }
+}
+
+extension MainViewController : UITableViewDataSource {
+    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return self.mainContens.count
+    }
+     
+    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        let cell = self.tableView.dequeueReusableCellWithIdentifier(DataTableViewCell.identifier) as! DataTableViewCell
+        let data = DataTableViewCellData(imageUrl: "dummy", text: mainContens[indexPath.row])
+        cell.setData(data)
+        return cell
+    }
+    
+    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+        let storyboard = UIStoryboard(name: "SubContentsViewController", bundle: nil)
+        let subContentsVC = storyboard.instantiateViewControllerWithIdentifier("SubContentsViewController") as! SubContentsViewController
+        self.navigationController?.pushViewController(subContentsVC, animated: true)
+    }
+}
+
+extension MainViewController : SlideMenuControllerDelegate {
+    
+    func leftWillOpen() {
+        print("SlideMenuControllerDelegate: leftWillOpen")
+    }
+    
+    func leftDidOpen() {
+        print("SlideMenuControllerDelegate: leftDidOpen")
+    }
+    
+    func leftWillClose() {
+        print("SlideMenuControllerDelegate: leftWillClose")
+    }
+    
+    func leftDidClose() {
+        print("SlideMenuControllerDelegate: leftDidClose")
+    }
+    
+    func rightWillOpen() {
+        print("SlideMenuControllerDelegate: rightWillOpen")
+    }
+    
+    func rightDidOpen() {
+        print("SlideMenuControllerDelegate: rightDidOpen")
+    }
+    
+    func rightWillClose() {
+        print("SlideMenuControllerDelegate: rightWillClose")
+    }
+    
+    func rightDidClose() {
+        print("SlideMenuControllerDelegate: rightDidClose")
+    }
+}

+ 22 - 0
Gasteizko Margolariak/ScheduleViewController.swift

@@ -0,0 +1,22 @@
+//
+//  ScheduleViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+
+import UIKit
+
+class ScheduleViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 21 - 0
Gasteizko Margolariak/SettingsViewController.swift

@@ -0,0 +1,21 @@
+//
+//  SettingsViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 22/08/16.
+//  Copyright © 2016 Gasteizko Margolariak. All rights reserved.
+//
+
+import UIKit
+
+class SettingsViewController: UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+    
+    override func viewWillAppear(animated: Bool) {
+        super.viewWillAppear(animated)
+        self.setNavigationBarItem()
+    }
+}

+ 1051 - 0
Gasteizko Margolariak/SlideMenuController.swift

@@ -0,0 +1,1051 @@
+//
+//  SlideMenuController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Inigo Valentin on 2016-08-23
+//  Copyright © 2016 Inigo Valentin. All rights reserved.
+//
+//  Based on the work of Yuji Hato.
+//
+
+import Foundation
+import UIKit
+
+@objc public protocol SlideMenuControllerDelegate {
+    optional func leftWillOpen()
+    optional func leftDidOpen()
+    optional func leftWillClose()
+    optional func leftDidClose()
+    optional func rightWillOpen()
+    optional func rightDidOpen()
+    optional func rightWillClose()
+    optional func rightDidClose()
+}
+
+public struct SlideMenuOptions {
+    public static var leftViewWidth: CGFloat = 270.0
+    public static var leftBezelWidth: CGFloat? = 16.0
+    public static var contentViewScale: CGFloat = 0.96
+    public static var contentViewOpacity: CGFloat = 0.5
+    public static var contentViewDrag: Bool = false
+    public static var shadowOpacity: CGFloat = 0.0
+    public static var shadowRadius: CGFloat = 0.0
+    public static var shadowOffset: CGSize = CGSizeMake(0,0)
+    public static var panFromBezel: Bool = true
+    public static var animationDuration: CGFloat = 0.4
+    public static var rightViewWidth: CGFloat = 270.0
+    public static var rightBezelWidth: CGFloat? = 16.0
+    public static var rightPanFromBezel: Bool = true
+    public static var hideStatusBar: Bool = true
+    public static var pointOfNoReturnWidth: CGFloat = 44.0
+    public static var simultaneousGestureRecognizers: Bool = true
+    public static var opacityViewBackgroundColor: UIColor = UIColor.blackColor()
+}
+
+public class SlideMenuController: UIViewController, UIGestureRecognizerDelegate {
+    
+    
+    public enum SlideAction {
+        case Open
+        case Close
+    }
+    
+    public enum TrackAction {
+        case LeftTapOpen
+        case LeftTapClose
+        case LeftFlickOpen
+        case LeftFlickClose
+        case RightTapOpen
+        case RightTapClose
+        case RightFlickOpen
+        case RightFlickClose
+    }
+    
+    
+    struct PanInfo {
+        var action: SlideAction
+        var shouldBounce: Bool
+        var velocity: CGFloat
+    }
+    
+    public weak var delegate: SlideMenuControllerDelegate?
+    
+    public var opacityView = UIView()
+    public var mainContainerView = UIView()
+    public var leftContainerView = UIView()
+    public var rightContainerView =  UIView()
+    public var mainViewController: UIViewController?
+    public var leftViewController: UIViewController?
+    public var leftPanGesture: UIPanGestureRecognizer?
+    public var leftTapGesture: UITapGestureRecognizer?
+    public var rightViewController: UIViewController?
+    public var rightPanGesture: UIPanGestureRecognizer?
+    public var rightTapGesture: UITapGestureRecognizer?
+    
+    public required init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+    }
+    
+    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
+        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
+    }
+    
+    public convenience init(mainViewController: UIViewController, leftMenuViewController: UIViewController) {
+        self.init()
+        self.mainViewController = mainViewController
+        leftViewController = leftMenuViewController
+        initView()
+    }
+    
+    
+    public convenience init(mainViewController: UIViewController, leftMenuViewController: UIViewController, rightMenuViewController: UIViewController) {
+        self.init()
+        self.mainViewController = mainViewController
+        leftViewController = leftMenuViewController
+        initView()
+    }
+    
+    public override func awakeFromNib() {
+        initView()
+    }
+    
+    deinit { }
+    
+    public func initView() {
+        mainContainerView = UIView(frame: view.bounds)
+        mainContainerView.backgroundColor = UIColor.clearColor()
+        mainContainerView.autoresizingMask = [.FlexibleHeight, .FlexibleWidth]
+        view.insertSubview(mainContainerView, atIndex: 0)
+        
+        var opacityframe: CGRect = view.bounds
+        let opacityOffset: CGFloat = 0
+        opacityframe.origin.y = opacityframe.origin.y + opacityOffset
+        opacityframe.size.height = opacityframe.size.height - opacityOffset
+        opacityView = UIView(frame: opacityframe)
+        opacityView.backgroundColor = SlideMenuOptions.opacityViewBackgroundColor
+        opacityView.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleWidth]
+        opacityView.layer.opacity = 0.0
+        view.insertSubview(opacityView, atIndex: 1)
+        
+        if leftViewController != nil {
+            var leftFrame: CGRect = view.bounds
+            leftFrame.size.width = SlideMenuOptions.leftViewWidth
+            leftFrame.origin.x = leftMinOrigin();
+            let leftOffset: CGFloat = 0
+            leftFrame.origin.y = leftFrame.origin.y + leftOffset
+            leftFrame.size.height = leftFrame.size.height - leftOffset
+            leftContainerView = UIView(frame: leftFrame)
+            leftContainerView.backgroundColor = UIColor.clearColor()
+            leftContainerView.autoresizingMask = UIViewAutoresizing.FlexibleHeight
+            view.insertSubview(leftContainerView, atIndex: 2)
+            addLeftGestures()
+        }
+        
+    }
+    
+    public override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
+        super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
+        mainContainerView.transform = CGAffineTransformMakeScale(1.0, 1.0)
+        leftContainerView.hidden = true
+        rightContainerView.hidden = true
+        
+        coordinator.animateAlongsideTransition(nil, completion: { (context: UIViewControllerTransitionCoordinatorContext!) -> Void in
+            self.closeLeftNonAnimation()
+            self.closeRightNonAnimation()
+            self.leftContainerView.hidden = false
+            self.rightContainerView.hidden = false
+            
+            if self.leftPanGesture != nil && self.leftPanGesture != nil {
+                self.removeLeftGestures()
+                self.addLeftGestures()
+            }
+            
+            if self.rightPanGesture != nil && self.rightPanGesture != nil {
+                self.removeRightGestures()
+                self.addRightGestures()
+            }
+        })
+    }
+    
+    public override func viewDidLoad() {
+        super.viewDidLoad()
+        edgesForExtendedLayout = UIRectEdge.None
+    }
+    
+    public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
+        if let mainController = self.mainViewController{
+            return mainController.supportedInterfaceOrientations()
+        }
+        return UIInterfaceOrientationMask.All
+    }
+    
+    public override func shouldAutorotate() -> Bool {
+        return mainViewController?.shouldAutorotate() ?? false
+    }
+    
+    public override func viewWillLayoutSubviews() {
+        // topLayoutGuideの値が確定するこのタイミングで各種ViewControllerをセットする
+        setUpViewController(mainContainerView, targetViewController: mainViewController)
+        setUpViewController(leftContainerView, targetViewController: leftViewController)
+        setUpViewController(rightContainerView, targetViewController: rightViewController)
+    }
+    
+    public override func openLeft() {
+        guard let _ = leftViewController else { // If leftViewController is nil, then return
+            return
+        }
+        
+        self.delegate?.leftWillOpen?()
+        
+        setOpenWindowLevel()
+        // for call viewWillAppear of leftViewController
+        leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
+        openLeftWithVelocity(0.0)
+        
+        track(.LeftTapOpen)
+    }
+    
+    public override func openRight() {
+        guard let _ = rightViewController else { // If rightViewController is nil, then return
+            return
+        }
+        
+        self.delegate?.rightWillOpen?()
+        
+        setOpenWindowLevel()
+        rightViewController?.beginAppearanceTransition(isRightHidden(), animated: true)
+        openRightWithVelocity(0.0)
+        
+        track(.RightTapOpen)
+    }
+    
+    public override func closeLeft() {
+        guard let _ = leftViewController else { // If leftViewController is nil, then return
+            return
+        }
+        
+        self.delegate?.leftWillClose?()
+        
+        leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
+        closeLeftWithVelocity(0.0)
+        setCloseWindowLevel()
+    }
+    
+    public override func closeRight() {
+        guard let _ = rightViewController else { // If rightViewController is nil, then return
+            return
+        }
+        
+        self.delegate?.rightWillClose?()
+        
+        rightViewController?.beginAppearanceTransition(isRightHidden(), animated: true)
+        closeRightWithVelocity(0.0)
+        setCloseWindowLevel()
+    }
+    
+    
+    public func addLeftGestures() {
+        
+        if (leftViewController != nil) {
+            if leftPanGesture == nil {
+                leftPanGesture = UIPanGestureRecognizer(target: self, action: #selector(self.handleLeftPanGesture(_:)))
+                leftPanGesture!.delegate = self
+                view.addGestureRecognizer(leftPanGesture!)
+            }
+            
+            if leftTapGesture == nil {
+                leftTapGesture = UITapGestureRecognizer(target: self, action: #selector(self.toggleLeft))
+                leftTapGesture!.delegate = self
+                view.addGestureRecognizer(leftTapGesture!)
+            }
+        }
+    }
+    
+    public func addRightGestures() {
+        
+        if (rightViewController != nil) {
+            if rightPanGesture == nil {
+                rightPanGesture = UIPanGestureRecognizer(target: self, action: #selector(self.handleRightPanGesture(_:)))
+                rightPanGesture!.delegate = self
+                view.addGestureRecognizer(rightPanGesture!)
+            }
+            
+            if rightTapGesture == nil {
+                rightTapGesture = UITapGestureRecognizer(target: self, action: #selector(self.toggleRight))
+                rightTapGesture!.delegate = self
+                view.addGestureRecognizer(rightTapGesture!)
+            }
+        }
+    }
+    
+    public func removeLeftGestures() {
+        
+        if leftPanGesture != nil {
+            view.removeGestureRecognizer(leftPanGesture!)
+            leftPanGesture = nil
+        }
+        
+        if leftTapGesture != nil {
+            view.removeGestureRecognizer(leftTapGesture!)
+            leftTapGesture = nil
+        }
+    }
+    
+    public func removeRightGestures() {
+        
+        if rightPanGesture != nil {
+            view.removeGestureRecognizer(rightPanGesture!)
+            rightPanGesture = nil
+        }
+        
+        if rightTapGesture != nil {
+            view.removeGestureRecognizer(rightTapGesture!)
+            rightTapGesture = nil
+        }
+    }
+    
+    public func isTagetViewController() -> Bool {
+        // Function to determine the target ViewController
+        // Please to override it if necessary
+        return true
+    }
+    
+    public func track(trackAction: TrackAction) {
+        // function is for tracking
+        // Please to override it if necessary
+    }
+    
+    struct LeftPanState {
+        static var frameAtStartOfPan: CGRect = CGRectZero
+        static var startPointOfPan: CGPoint = CGPointZero
+        static var wasOpenAtStartOfPan: Bool = false
+        static var wasHiddenAtStartOfPan: Bool = false
+        static var lastState : UIGestureRecognizerState = .Ended
+    }
+    
+    func handleLeftPanGesture(panGesture: UIPanGestureRecognizer) {
+        
+        if !isTagetViewController() {
+            return
+        }
+        
+        if isRightOpen() {
+            return
+        }
+        
+        switch panGesture.state {
+        case UIGestureRecognizerState.Began:
+            if LeftPanState.lastState != .Ended &&  LeftPanState.lastState != .Cancelled &&  LeftPanState.lastState != .Failed {
+                return
+            }
+            
+            if isLeftHidden() {
+                self.delegate?.leftWillOpen?()
+            } else {
+                self.delegate?.leftWillClose?()
+            }
+            
+            LeftPanState.frameAtStartOfPan = leftContainerView.frame
+            LeftPanState.startPointOfPan = panGesture.locationInView(view)
+            LeftPanState.wasOpenAtStartOfPan = isLeftOpen()
+            LeftPanState.wasHiddenAtStartOfPan = isLeftHidden()
+            
+            leftViewController?.beginAppearanceTransition(LeftPanState.wasHiddenAtStartOfPan, animated: true)
+            addShadowToView(leftContainerView)
+            setOpenWindowLevel()
+        case UIGestureRecognizerState.Changed:
+            if LeftPanState.lastState != .Began && LeftPanState.lastState != .Changed {
+                return
+            }
+            
+            let translation: CGPoint = panGesture.translationInView(panGesture.view!)
+            leftContainerView.frame = applyLeftTranslation(translation, toFrame: LeftPanState.frameAtStartOfPan)
+            applyLeftOpacity()
+            applyLeftContentViewScale()
+        case UIGestureRecognizerState.Ended, UIGestureRecognizerState.Cancelled:
+            if LeftPanState.lastState != .Changed {
+                setCloseWindowLevel()
+                return
+            }
+            
+            let velocity:CGPoint = panGesture.velocityInView(panGesture.view)
+            let panInfo: PanInfo = panLeftResultInfoForVelocity(velocity)
+            
+            if panInfo.action == .Open {
+                if !LeftPanState.wasHiddenAtStartOfPan {
+                    leftViewController?.beginAppearanceTransition(true, animated: true)
+                }
+                openLeftWithVelocity(panInfo.velocity)
+                
+                track(.LeftFlickOpen)
+            } else {
+                if LeftPanState.wasHiddenAtStartOfPan {
+                    leftViewController?.beginAppearanceTransition(false, animated: true)
+                }
+                closeLeftWithVelocity(panInfo.velocity)
+                setCloseWindowLevel()
+                
+                track(.LeftFlickClose)
+                
+            }
+        case UIGestureRecognizerState.Failed, UIGestureRecognizerState.Possible:
+            break
+        }
+        
+        LeftPanState.lastState = panGesture.state
+    }
+    
+    struct RightPanState {
+        static var frameAtStartOfPan: CGRect = CGRectZero
+        static var startPointOfPan: CGPoint = CGPointZero
+        static var wasOpenAtStartOfPan: Bool = false
+        static var wasHiddenAtStartOfPan: Bool = false
+        static var lastState : UIGestureRecognizerState = .Ended
+    }
+    
+    func handleRightPanGesture(panGesture: UIPanGestureRecognizer) {
+        
+        if !isTagetViewController() {
+            return
+        }
+        
+        if isLeftOpen() {
+            return
+        }
+        
+        switch panGesture.state {
+        case UIGestureRecognizerState.Began:
+            if RightPanState.lastState != .Ended &&  RightPanState.lastState != .Cancelled &&  RightPanState.lastState != .Failed {
+                return
+            }
+            
+            if isRightHidden() {
+                self.delegate?.rightWillOpen?()
+            } else {
+                self.delegate?.rightWillClose?()
+            }
+            
+            RightPanState.frameAtStartOfPan = rightContainerView.frame
+            RightPanState.startPointOfPan = panGesture.locationInView(view)
+            RightPanState.wasOpenAtStartOfPan =  isRightOpen()
+            RightPanState.wasHiddenAtStartOfPan = isRightHidden()
+            
+            rightViewController?.beginAppearanceTransition(RightPanState.wasHiddenAtStartOfPan, animated: true)
+            
+            addShadowToView(rightContainerView)
+            setOpenWindowLevel()
+        case UIGestureRecognizerState.Changed:
+            if RightPanState.lastState != .Began && RightPanState.lastState != .Changed {
+                return
+            }
+            
+            let translation: CGPoint = panGesture.translationInView(panGesture.view!)
+            rightContainerView.frame = applyRightTranslation(translation, toFrame: RightPanState.frameAtStartOfPan)
+            applyRightOpacity()
+            applyRightContentViewScale()
+            
+        case UIGestureRecognizerState.Ended, UIGestureRecognizerState.Cancelled:
+            if RightPanState.lastState != .Changed {
+                setCloseWindowLevel()
+                return
+            }
+            
+            let velocity: CGPoint = panGesture.velocityInView(panGesture.view)
+            let panInfo: PanInfo = panRightResultInfoForVelocity(velocity)
+            
+            if panInfo.action == .Open {
+                if !RightPanState.wasHiddenAtStartOfPan {
+                    rightViewController?.beginAppearanceTransition(true, animated: true)
+                }
+                openRightWithVelocity(panInfo.velocity)
+                
+                track(.RightFlickOpen)
+            } else {
+                if RightPanState.wasHiddenAtStartOfPan {
+                    rightViewController?.beginAppearanceTransition(false, animated: true)
+                }
+                closeRightWithVelocity(panInfo.velocity)
+                setCloseWindowLevel()
+                
+                track(.RightFlickClose)
+            }
+        case UIGestureRecognizerState.Failed, UIGestureRecognizerState.Possible:
+            break
+        }
+        
+        RightPanState.lastState = panGesture.state
+    }
+    
+    public func openLeftWithVelocity(velocity: CGFloat) {
+        let xOrigin: CGFloat = leftContainerView.frame.origin.x
+        let finalXOrigin: CGFloat = 0.0
+        
+        var frame = leftContainerView.frame;
+        frame.origin.x = finalXOrigin;
+        
+        var duration: NSTimeInterval = Double(SlideMenuOptions.animationDuration)
+        if velocity != 0.0 {
+            duration = Double(fabs(xOrigin - finalXOrigin) / velocity)
+            duration = Double(fmax(0.1, fmin(1.0, duration)))
+        }
+        
+        addShadowToView(leftContainerView)
+        
+        UIView.animateWithDuration(duration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { [weak self]() -> Void in
+            if let strongSelf = self {
+                strongSelf.leftContainerView.frame = frame
+                strongSelf.opacityView.layer.opacity = Float(SlideMenuOptions.contentViewOpacity)
+                
+                SlideMenuOptions.contentViewDrag == true ? (strongSelf.mainContainerView.transform = CGAffineTransformMakeTranslation(SlideMenuOptions.leftViewWidth, 0)) : (strongSelf.mainContainerView.transform = CGAffineTransformMakeScale(SlideMenuOptions.contentViewScale, SlideMenuOptions.contentViewScale))
+                
+            }
+        }) { [weak self](Bool) -> Void in
+            if let strongSelf = self {
+                strongSelf.disableContentInteraction()
+                strongSelf.leftViewController?.endAppearanceTransition()
+                strongSelf.delegate?.leftDidOpen?()
+            }
+        }
+    }
+    
+    public func openRightWithVelocity(velocity: CGFloat) {
+        let xOrigin: CGFloat = rightContainerView.frame.origin.x
+        
+        //	CGFloat finalXOrigin = SlideMenuOptions.rightViewOverlapWidth;
+        let finalXOrigin: CGFloat = CGRectGetWidth(view.bounds) - rightContainerView.frame.size.width
+        
+        var frame = rightContainerView.frame
+        frame.origin.x = finalXOrigin
+        
+        var duration: NSTimeInterval = Double(SlideMenuOptions.animationDuration)
+        if velocity != 0.0 {
+            duration = Double(fabs(xOrigin - CGRectGetWidth(view.bounds)) / velocity)
+            duration = Double(fmax(0.1, fmin(1.0, duration)))
+        }
+        
+        addShadowToView(rightContainerView)
+        
+        UIView.animateWithDuration(duration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { [weak self]() -> Void in
+            if let strongSelf = self {
+                strongSelf.rightContainerView.frame = frame
+                strongSelf.opacityView.layer.opacity = Float(SlideMenuOptions.contentViewOpacity)
+                
+                SlideMenuOptions.contentViewDrag == true ? (strongSelf.mainContainerView.transform = CGAffineTransformMakeTranslation(-SlideMenuOptions.rightViewWidth, 0)) : (strongSelf.mainContainerView.transform = CGAffineTransformMakeScale(SlideMenuOptions.contentViewScale, SlideMenuOptions.contentViewScale))
+            }
+        }) { [weak self](Bool) -> Void in
+            if let strongSelf = self {
+                strongSelf.disableContentInteraction()
+                strongSelf.rightViewController?.endAppearanceTransition()
+                strongSelf.delegate?.rightDidOpen?()
+            }
+        }
+    }
+    
+    public func closeLeftWithVelocity(velocity: CGFloat) {
+        
+        let xOrigin: CGFloat = leftContainerView.frame.origin.x
+        let finalXOrigin: CGFloat = leftMinOrigin()
+        
+        var frame: CGRect = leftContainerView.frame;
+        frame.origin.x = finalXOrigin
+        
+        var duration: NSTimeInterval = Double(SlideMenuOptions.animationDuration)
+        if velocity != 0.0 {
+            duration = Double(fabs(xOrigin - finalXOrigin) / velocity)
+            duration = Double(fmax(0.1, fmin(1.0, duration)))
+        }
+        
+        UIView.animateWithDuration(duration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { [weak self]() -> Void in
+            if let strongSelf = self {
+                strongSelf.leftContainerView.frame = frame
+                strongSelf.opacityView.layer.opacity = 0.0
+                strongSelf.mainContainerView.transform = CGAffineTransformMakeScale(1.0, 1.0)
+            }
+        }) { [weak self](Bool) -> Void in
+            if let strongSelf = self {
+                strongSelf.removeShadow(strongSelf.leftContainerView)
+                strongSelf.enableContentInteraction()
+                strongSelf.leftViewController?.endAppearanceTransition()
+                strongSelf.delegate?.leftDidClose?()
+            }
+        }
+    }
+    
+    
+    public func closeRightWithVelocity(velocity: CGFloat) {
+        
+        let xOrigin: CGFloat = rightContainerView.frame.origin.x
+        let finalXOrigin: CGFloat = CGRectGetWidth(view.bounds)
+        
+        var frame: CGRect = rightContainerView.frame
+        frame.origin.x = finalXOrigin
+        
+        var duration: NSTimeInterval = Double(SlideMenuOptions.animationDuration)
+        if velocity != 0.0 {
+            duration = Double(fabs(xOrigin - CGRectGetWidth(view.bounds)) / velocity)
+            duration = Double(fmax(0.1, fmin(1.0, duration)))
+        }
+        
+        UIView.animateWithDuration(duration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { [weak self]() -> Void in
+            if let strongSelf = self {
+                strongSelf.rightContainerView.frame = frame
+                strongSelf.opacityView.layer.opacity = 0.0
+                strongSelf.mainContainerView.transform = CGAffineTransformMakeScale(1.0, 1.0)
+            }
+        }) { [weak self](Bool) -> Void in
+            if let strongSelf = self {
+                strongSelf.removeShadow(strongSelf.rightContainerView)
+                strongSelf.enableContentInteraction()
+                strongSelf.rightViewController?.endAppearanceTransition()
+                strongSelf.delegate?.rightDidClose?()
+            }
+        }
+    }
+    
+    
+    public override func toggleLeft() {
+        if isLeftOpen() {
+            closeLeft()
+            setCloseWindowLevel()
+            // Tracking of close tap is put in here. Because closeMenu is due to be call even when the menu tap.
+            
+            track(.LeftTapClose)
+        } else {
+            openLeft()
+        }
+    }
+    
+    public func isLeftOpen() -> Bool {
+        return leftViewController != nil && leftContainerView.frame.origin.x == 0.0
+    }
+    
+    public func isLeftHidden() -> Bool {
+        return leftContainerView.frame.origin.x <= leftMinOrigin()
+    }
+    
+    public override func toggleRight() {
+        if isRightOpen() {
+            closeRight()
+            setCloseWindowLevel()
+            
+            // Tracking of close tap is put in here. Because closeMenu is due to be call even when the menu tap.
+            track(.RightTapClose)
+        } else {
+            openRight()
+        }
+    }
+    
+    public func isRightOpen() -> Bool {
+        return rightViewController != nil && rightContainerView.frame.origin.x == CGRectGetWidth(view.bounds) - rightContainerView.frame.size.width
+    }
+    
+    public func isRightHidden() -> Bool {
+        return rightContainerView.frame.origin.x >= CGRectGetWidth(view.bounds)
+    }
+    
+    public func changeMainViewController(mainViewController: UIViewController,  close: Bool) {
+        
+        removeViewController(self.mainViewController)
+        self.mainViewController = mainViewController
+        setUpViewController(mainContainerView, targetViewController: mainViewController)
+        if (close) {
+            closeLeft()
+            closeRight()
+        }
+    }
+    
+    public func changeLeftViewWidth(width: CGFloat) {
+        
+        SlideMenuOptions.leftViewWidth = width;
+        var leftFrame: CGRect = view.bounds
+        leftFrame.size.width = width
+        leftFrame.origin.x = leftMinOrigin();
+        let leftOffset: CGFloat = 0
+        leftFrame.origin.y = leftFrame.origin.y + leftOffset
+        leftFrame.size.height = leftFrame.size.height - leftOffset
+        leftContainerView.frame = leftFrame;
+    }
+    
+    public func changeRightViewWidth(width: CGFloat) {
+        
+        SlideMenuOptions.rightBezelWidth = width;
+        var rightFrame: CGRect = view.bounds
+        rightFrame.size.width = width
+        rightFrame.origin.x = rightMinOrigin()
+        let rightOffset: CGFloat = 0
+        rightFrame.origin.y = rightFrame.origin.y + rightOffset;
+        rightFrame.size.height = rightFrame.size.height - rightOffset
+        rightContainerView.frame = rightFrame;
+    }
+    
+    public func changeLeftViewController(leftViewController: UIViewController, closeLeft:Bool) {
+        
+        removeViewController(self.leftViewController)
+        self.leftViewController = leftViewController
+        setUpViewController(leftContainerView, targetViewController: leftViewController)
+        if closeLeft {
+            self.closeLeft()
+        }
+    }
+    
+    public func changeRightViewController(rightViewController: UIViewController, closeRight:Bool) {
+        removeViewController(self.rightViewController)
+        self.rightViewController = rightViewController;
+        setUpViewController(rightContainerView, targetViewController: rightViewController)
+        if closeRight {
+            self.closeRight()
+        }
+    }
+    
+    private func leftMinOrigin() -> CGFloat {
+        return  -SlideMenuOptions.leftViewWidth
+    }
+    
+    private func rightMinOrigin() -> CGFloat {
+        return CGRectGetWidth(view.bounds)
+    }
+    
+    
+    private func panLeftResultInfoForVelocity(velocity: CGPoint) -> PanInfo {
+        
+        let thresholdVelocity: CGFloat = 1000.0
+        let pointOfNoReturn: CGFloat = CGFloat(floor(leftMinOrigin())) + SlideMenuOptions.pointOfNoReturnWidth
+        let leftOrigin: CGFloat = leftContainerView.frame.origin.x
+        
+        var panInfo: PanInfo = PanInfo(action: .Close, shouldBounce: false, velocity: 0.0)
+        
+        panInfo.action = leftOrigin <= pointOfNoReturn ? .Close : .Open;
+        
+        if velocity.x >= thresholdVelocity {
+            panInfo.action = .Open
+            panInfo.velocity = velocity.x
+        } else if velocity.x <= (-1.0 * thresholdVelocity) {
+            panInfo.action = .Close
+            panInfo.velocity = velocity.x
+        }
+        
+        return panInfo
+    }
+    
+    private func panRightResultInfoForVelocity(velocity: CGPoint) -> PanInfo {
+        
+        let thresholdVelocity: CGFloat = -1000.0
+        let pointOfNoReturn: CGFloat = CGFloat(floor(CGRectGetWidth(view.bounds)) - SlideMenuOptions.pointOfNoReturnWidth)
+        let rightOrigin: CGFloat = rightContainerView.frame.origin.x
+        
+        var panInfo: PanInfo = PanInfo(action: .Close, shouldBounce: false, velocity: 0.0)
+        
+        panInfo.action = rightOrigin >= pointOfNoReturn ? .Close : .Open
+        
+        if velocity.x <= thresholdVelocity {
+            panInfo.action = .Open
+            panInfo.velocity = velocity.x
+        } else if (velocity.x >= (-1.0 * thresholdVelocity)) {
+            panInfo.action = .Close
+            panInfo.velocity = velocity.x
+        }
+        
+        return panInfo
+    }
+    
+    private func applyLeftTranslation(translation: CGPoint, toFrame:CGRect) -> CGRect {
+        
+        var newOrigin: CGFloat = toFrame.origin.x
+        newOrigin += translation.x
+        
+        let minOrigin: CGFloat = leftMinOrigin()
+        let maxOrigin: CGFloat = 0.0
+        var newFrame: CGRect = toFrame
+        
+        if newOrigin < minOrigin {
+            newOrigin = minOrigin
+        } else if newOrigin > maxOrigin {
+            newOrigin = maxOrigin
+        }
+        
+        newFrame.origin.x = newOrigin
+        return newFrame
+    }
+    
+    private func applyRightTranslation(translation: CGPoint, toFrame: CGRect) -> CGRect {
+        
+        var  newOrigin: CGFloat = toFrame.origin.x
+        newOrigin += translation.x
+        
+        let minOrigin: CGFloat = rightMinOrigin()
+        let maxOrigin: CGFloat = rightMinOrigin() - rightContainerView.frame.size.width
+        var newFrame: CGRect = toFrame
+        
+        if newOrigin > minOrigin {
+            newOrigin = minOrigin
+        } else if newOrigin < maxOrigin {
+            newOrigin = maxOrigin
+        }
+        
+        newFrame.origin.x = newOrigin
+        return newFrame
+    }
+    
+    private func getOpenedLeftRatio() -> CGFloat {
+        
+        let width: CGFloat = leftContainerView.frame.size.width
+        let currentPosition: CGFloat = leftContainerView.frame.origin.x - leftMinOrigin()
+        return currentPosition / width
+    }
+    
+    private func getOpenedRightRatio() -> CGFloat {
+        
+        let width: CGFloat = rightContainerView.frame.size.width
+        let currentPosition: CGFloat = rightContainerView.frame.origin.x
+        return -(currentPosition - CGRectGetWidth(view.bounds)) / width
+    }
+    
+    private func applyLeftOpacity() {
+        
+        let openedLeftRatio: CGFloat = getOpenedLeftRatio()
+        let opacity: CGFloat = SlideMenuOptions.contentViewOpacity * openedLeftRatio
+        opacityView.layer.opacity = Float(opacity)
+    }
+    
+    
+    private func applyRightOpacity() {
+        let openedRightRatio: CGFloat = getOpenedRightRatio()
+        let opacity: CGFloat = SlideMenuOptions.contentViewOpacity * openedRightRatio
+        opacityView.layer.opacity = Float(opacity)
+    }
+    
+    private func applyLeftContentViewScale() {
+        let openedLeftRatio: CGFloat = getOpenedLeftRatio()
+        let scale: CGFloat = 1.0 - ((1.0 - SlideMenuOptions.contentViewScale) * openedLeftRatio);
+        let drag: CGFloat = SlideMenuOptions.leftViewWidth + leftContainerView.frame.origin.x
+        
+        SlideMenuOptions.contentViewDrag == true ? (mainContainerView.transform = CGAffineTransformMakeTranslation(drag, 0)) : (mainContainerView.transform = CGAffineTransformMakeScale(scale, scale))
+    }
+    
+    private func applyRightContentViewScale() {
+        let openedRightRatio: CGFloat = getOpenedRightRatio()
+        let scale: CGFloat = 1.0 - ((1.0 - SlideMenuOptions.contentViewScale) * openedRightRatio)
+        let drag: CGFloat = rightContainerView.frame.origin.x - mainContainerView.frame.size.width
+        
+        SlideMenuOptions.contentViewDrag == true ? (mainContainerView.transform = CGAffineTransformMakeTranslation(drag, 0)) : (mainContainerView.transform = CGAffineTransformMakeScale(scale, scale))
+    }
+    
+    private func addShadowToView(targetContainerView: UIView) {
+        targetContainerView.layer.masksToBounds = false
+        targetContainerView.layer.shadowOffset = SlideMenuOptions.shadowOffset
+        targetContainerView.layer.shadowOpacity = Float(SlideMenuOptions.shadowOpacity)
+        targetContainerView.layer.shadowRadius = SlideMenuOptions.shadowRadius
+        targetContainerView.layer.shadowPath = UIBezierPath(rect: targetContainerView.bounds).CGPath
+    }
+    
+    private func removeShadow(targetContainerView: UIView) {
+        targetContainerView.layer.masksToBounds = true
+        mainContainerView.layer.opacity = 1.0
+    }
+    
+    private func removeContentOpacity() {
+        opacityView.layer.opacity = 0.0
+    }
+    
+    
+    private func addContentOpacity() {
+        opacityView.layer.opacity = Float(SlideMenuOptions.contentViewOpacity)
+    }
+    
+    private func disableContentInteraction() {
+        mainContainerView.userInteractionEnabled = false
+    }
+    
+    private func enableContentInteraction() {
+        mainContainerView.userInteractionEnabled = true
+    }
+    
+    private func setOpenWindowLevel() {
+        if (SlideMenuOptions.hideStatusBar) {
+            dispatch_async(dispatch_get_main_queue(), {
+                if let window = UIApplication.sharedApplication().keyWindow {
+                    window.windowLevel = UIWindowLevelStatusBar + 1
+                }
+            })
+        }
+    }
+    
+    private func setCloseWindowLevel() {
+        if (SlideMenuOptions.hideStatusBar) {
+            dispatch_async(dispatch_get_main_queue(), {
+                if let window = UIApplication.sharedApplication().keyWindow {
+                    window.windowLevel = UIWindowLevelNormal
+                }
+            })
+        }
+    }
+    
+    private func setUpViewController(targetView: UIView, targetViewController: UIViewController?) {
+        if let viewController = targetViewController {
+            addChildViewController(viewController)
+            viewController.view.frame = targetView.bounds
+            targetView.addSubview(viewController.view)
+            viewController.didMoveToParentViewController(self)
+        }
+    }
+    
+    
+    private func removeViewController(viewController: UIViewController?) {
+        if let _viewController = viewController {
+            _viewController.view.layer.removeAllAnimations()
+            _viewController.willMoveToParentViewController(nil)
+            _viewController.view.removeFromSuperview()
+            _viewController.removeFromParentViewController()
+        }
+    }
+    
+    public func closeLeftNonAnimation(){
+        setCloseWindowLevel()
+        let finalXOrigin: CGFloat = leftMinOrigin()
+        var frame: CGRect = leftContainerView.frame;
+        frame.origin.x = finalXOrigin
+        leftContainerView.frame = frame
+        opacityView.layer.opacity = 0.0
+        mainContainerView.transform = CGAffineTransformMakeScale(1.0, 1.0)
+        removeShadow(leftContainerView)
+        enableContentInteraction()
+    }
+    
+    public func closeRightNonAnimation(){
+        setCloseWindowLevel()
+        let finalXOrigin: CGFloat = CGRectGetWidth(view.bounds)
+        var frame: CGRect = rightContainerView.frame
+        frame.origin.x = finalXOrigin
+        rightContainerView.frame = frame
+        opacityView.layer.opacity = 0.0
+        mainContainerView.transform = CGAffineTransformMakeScale(1.0, 1.0)
+        removeShadow(rightContainerView)
+        enableContentInteraction()
+    }
+    
+    // MARK: UIGestureRecognizerDelegate
+    public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
+        
+        let point: CGPoint = touch.locationInView(view)
+        
+        if gestureRecognizer == leftPanGesture {
+            return slideLeftForGestureRecognizer(gestureRecognizer, point: point)
+        } else if gestureRecognizer == rightPanGesture {
+            return slideRightViewForGestureRecognizer(gestureRecognizer, withTouchPoint: point)
+        } else if gestureRecognizer == leftTapGesture {
+            return isLeftOpen() && !isPointContainedWithinLeftRect(point)
+        } else if gestureRecognizer == rightTapGesture {
+            return isRightOpen() && !isPointContainedWithinRightRect(point)
+        }
+        
+        return true
+    }
+    
+    // returning true here helps if the main view is fullwidth with a scrollview
+    public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
+        return SlideMenuOptions.simultaneousGestureRecognizers
+    }
+    
+    private func slideLeftForGestureRecognizer( gesture: UIGestureRecognizer, point:CGPoint) -> Bool{
+        return isLeftOpen() || SlideMenuOptions.panFromBezel && isLeftPointContainedWithinBezelRect(point)
+    }
+    
+    private func isLeftPointContainedWithinBezelRect(point: CGPoint) -> Bool{
+        if let bezelWidth = SlideMenuOptions.leftBezelWidth {
+            var leftBezelRect: CGRect = CGRectZero
+            var tempRect: CGRect = CGRectZero
+            
+            CGRectDivide(view.bounds, &leftBezelRect, &tempRect, bezelWidth, CGRectEdge.MinXEdge)
+            return CGRectContainsPoint(leftBezelRect, point)
+        } else {
+            return true
+        }
+    }
+    
+    private func isPointContainedWithinLeftRect(point: CGPoint) -> Bool {
+        return CGRectContainsPoint(leftContainerView.frame, point)
+    }
+    
+    
+    
+    private func slideRightViewForGestureRecognizer(gesture: UIGestureRecognizer, withTouchPoint point: CGPoint) -> Bool {
+        return isRightOpen() || SlideMenuOptions.rightPanFromBezel && isRightPointContainedWithinBezelRect(point)
+    }
+    
+    private func isRightPointContainedWithinBezelRect(point: CGPoint) -> Bool {
+        if let rightBezelWidth = SlideMenuOptions.rightBezelWidth {
+            var rightBezelRect: CGRect = CGRectZero
+            var tempRect: CGRect = CGRectZero
+            let bezelWidth: CGFloat = CGRectGetWidth(view.bounds) - rightBezelWidth
+            
+            CGRectDivide(view.bounds, &tempRect, &rightBezelRect, bezelWidth, CGRectEdge.MinXEdge)
+            
+            return CGRectContainsPoint(rightBezelRect, point)
+        } else {
+            return true
+        }
+    }
+    
+    private func isPointContainedWithinRightRect(point: CGPoint) -> Bool {
+        return CGRectContainsPoint(rightContainerView.frame, point)
+    }
+    
+}
+
+
+extension UIViewController {
+    
+    public func slideMenuController() -> SlideMenuController? {
+        var viewController: UIViewController? = self
+        while viewController != nil {
+            if viewController is SlideMenuController {
+                return viewController as? SlideMenuController
+            }
+            viewController = viewController?.parentViewController
+        }
+        return nil;
+    }
+    
+    public func addLeftBarButtonWithImage(buttonImage: UIImage) {
+        let leftButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(self.toggleLeft))
+        navigationItem.leftBarButtonItem = leftButton;
+    }
+    
+    public func addRightBarButtonWithImage(buttonImage: UIImage) {
+        let rightButton: UIBarButtonItem = UIBarButtonItem(image: buttonImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(self.toggleRight))
+        navigationItem.rightBarButtonItem = rightButton;
+    }
+    
+    public func toggleLeft() {
+        slideMenuController()?.toggleLeft()
+    }
+    
+    public func toggleRight() {
+        slideMenuController()?.toggleRight()
+    }
+    
+    public func openLeft() {
+        slideMenuController()?.openLeft()
+    }
+    
+    public func openRight() {
+        slideMenuController()?.openRight()    }
+    
+    public func closeLeft() {
+        slideMenuController()?.closeLeft()
+    }
+    
+    public func closeRight() {
+        slideMenuController()?.closeRight()
+    }
+    
+    // Please specify if you want menu gesuture give priority to than targetScrollView
+    public func addPriorityToMenuGesuture(targetScrollView: UIScrollView) {
+        guard let slideController = slideMenuController(), let recognizers = slideController.view.gestureRecognizers else {
+            return
+        }
+        for recognizer in recognizers where recognizer is UIPanGestureRecognizer {
+            targetScrollView.panGestureRecognizer.requireGestureRecognizerToFail(recognizer)
+        }
+    }
+}

+ 8 - 0
Gasteizko Margolariak/SlideMenuControllerSwift.xcdatamodeld/.xccurrentversion

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>_XCCurrentVersionName</key>
+	<string>SlideMenuControllerSwift.xcdatamodel</string>
+</dict>
+</plist>

+ 4 - 0
Gasteizko Margolariak/SlideMenuControllerSwift.xcdatamodeld/SlideMenuControllerSwift.xcdatamodel/contents

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<model name="Test1.xcdatamodel" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
+    <elements/>
+</model>

+ 23 - 0
Gasteizko Margolariak/String.swift

@@ -0,0 +1,23 @@
+//
+//  StringExtension.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 1/22/15.
+//  Copyright (c) 2015 Yuji Hato. All rights reserved.
+//
+
+import Foundation
+
+extension String {
+    static func className(aClass: AnyClass) -> String {
+        return NSStringFromClass(aClass).componentsSeparatedByString(".").last!
+    }
+    
+    func substring(from: Int) -> String {
+        return self.substringFromIndex(self.startIndex.advancedBy(from))
+    }
+    
+    var length: Int {
+        return self.characters.count
+    }
+}

+ 43 - 0
Gasteizko Margolariak/SubContentsViewController.storyboard

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+    </dependencies>
+    <scenes>
+        <!--Sub Contents View Controller-->
+        <scene sceneID="TTa-d3-aNE">
+            <objects>
+                <viewController storyboardIdentifier="SubContentsViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="vxl-gz-eiI" customClass="SubContentsViewController" customModule="Gasteizko_Margolariak" customModuleProvider="target" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="1Sf-aL-9sl"/>
+                        <viewControllerLayoutGuide type="bottom" id="H0R-6Q-ShB"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="VsC-r5-AAR">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SubContentsViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xqF-Kk-mvY">
+                                <rect key="frame" x="140" y="100" width="320" height="93"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="93" id="0ED-FM-x7N"/>
+                                    <constraint firstAttribute="width" constant="320" id="eKl-6z-MNt"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                                <color key="textColor" red="0.61960784310000006" green="0.61960784310000006" blue="0.61960784310000006" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.8784313725490196" green="0.94901960784313721" blue="0.94509803921568625" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstItem="xqF-Kk-mvY" firstAttribute="top" secondItem="1Sf-aL-9sl" secondAttribute="bottom" constant="80" id="5JP-YF-zSK"/>
+                            <constraint firstItem="xqF-Kk-mvY" firstAttribute="centerX" secondItem="VsC-r5-AAR" secondAttribute="centerX" id="CZb-mL-3je"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="RcS-82-FP2" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="269" y="336"/>
+        </scene>
+    </scenes>
+</document>

+ 16 - 0
Gasteizko Margolariak/SubContentsViewController.swift

@@ -0,0 +1,16 @@
+//
+//  SubContentsViewController.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 11/8/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+class SubContentsViewController : UIViewController {
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+}

+ 30 - 0
Gasteizko Margolariak/UIApplication.swift

@@ -0,0 +1,30 @@
+//
+//  UIApplication.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 11/11/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+import UIKit
+
+extension UIApplication {
+    
+    class func topViewController(viewController: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? {
+        if let nav = viewController as? UINavigationController {
+            return topViewController(nav.visibleViewController)
+        }
+        if let tab = viewController as? UITabBarController {
+            if let selected = tab.selectedViewController {
+                return topViewController(selected)
+            }
+        }
+        if let presented = viewController?.presentedViewController {
+            return topViewController(presented)
+        }
+        
+        if let slide = viewController as? SlideMenuController {
+            return topViewController(slide.mainViewController)
+        }
+        return viewController
+    }
+}

+ 50 - 0
Gasteizko Margolariak/UIColor.swift

@@ -0,0 +1,50 @@
+//
+//  UIColor.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 11/5/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+extension UIColor {
+
+    convenience init(hex: String) {
+        self.init(hex: hex, alpha:1)
+    }
+
+    convenience init(hex: String, alpha: CGFloat) {
+        var hexWithoutSymbol = hex
+        if hexWithoutSymbol.hasPrefix("#") {
+            hexWithoutSymbol = hex.substring(1)
+        }
+        
+        let scanner = NSScanner(string: hexWithoutSymbol)
+        var hexInt:UInt32 = 0x0
+        scanner.scanHexInt(&hexInt)
+        
+        var r:UInt32!, g:UInt32!, b:UInt32!
+        switch (hexWithoutSymbol.length) {
+        case 3: // #RGB
+            r = ((hexInt >> 4) & 0xf0 | (hexInt >> 8) & 0x0f)
+            g = ((hexInt >> 0) & 0xf0 | (hexInt >> 4) & 0x0f)
+            b = ((hexInt << 4) & 0xf0 | hexInt & 0x0f)
+            break;
+        case 6: // #RRGGBB
+            r = (hexInt >> 16) & 0xff
+            g = (hexInt >> 8) & 0xff
+            b = hexInt & 0xff
+            break;
+        default:
+            // TODO:ERROR
+            break;
+        }
+        
+        self.init(
+            red: (CGFloat(r)/255),
+            green: (CGFloat(g)/255),
+            blue: (CGFloat(b)/255),
+            alpha:alpha)
+    }
+}

+ 28 - 0
Gasteizko Margolariak/UIImage.swift

@@ -0,0 +1,28 @@
+//
+//  UIIMage.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 11/5/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+extension UIImage {
+    func trim(trimRect trimRect :CGRect) -> UIImage {
+        if CGRectContainsRect(CGRect(origin: CGPointZero, size: self.size), trimRect) {
+            if let imageRef = CGImageCreateWithImageInRect(self.CGImage, trimRect) {
+                return UIImage(CGImage: imageRef)
+            }
+        }
+        
+        UIGraphicsBeginImageContextWithOptions(trimRect.size, true, self.scale)
+        self.drawInRect(CGRect(x: -trimRect.minX, y: -trimRect.minY, width: self.size.width, height: self.size.height))
+        let trimmedImage = UIGraphicsGetImageFromCurrentImageContext()
+        UIGraphicsEndImageContext()
+        
+        guard let image = trimmedImage else { return self }
+        
+        return image
+    }
+}

+ 69 - 0
Gasteizko Margolariak/UIImageView.swift

@@ -0,0 +1,69 @@
+//
+//  UIImageView.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 11/3/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+
+extension UIImageView {
+    
+    func setRandomDownloadImage(width: Int, height: Int) {
+        if self.image != nil {
+            self.alpha = 1
+            return
+        }
+        self.alpha = 0
+        let url = NSURL(string: "https://ssl.webpack.de/lorempixel.com/\(width)/\(height)/")!
+        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
+        configuration.timeoutIntervalForRequest = 15
+        configuration.timeoutIntervalForResource = 15
+        configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
+        let session = NSURLSession(configuration: configuration)
+        let task = session.dataTaskWithURL(url, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
+            if error != nil {
+                return
+            }
+            
+            if let response = response as? NSHTTPURLResponse {
+                if response.statusCode / 100 != 2 {
+                    return
+                }
+                if let data = data, let image = UIImage(data: data) {
+                    dispatch_async(dispatch_get_main_queue(), { () -> Void in
+                        self.image = image
+                        UIView.animateWithDuration(0.3, animations: { () -> Void in
+                            self.alpha = 1
+                            }) { (finished: Bool) -> Void in
+                        }
+                    })
+                }
+            }
+        })
+        task.resume()
+    }
+    
+    func clipParallaxEffect(baseImage: UIImage?, screenSize: CGSize, displayHeight: CGFloat) {
+        if let baseImage = baseImage {
+            if displayHeight < 0 {
+                return
+            }
+            let aspect: CGFloat = screenSize.width / screenSize.height
+            let imageSize = baseImage.size
+            let imageScale: CGFloat = imageSize.height / screenSize.height
+            
+            let cropWidth: CGFloat = floor(aspect < 1.0 ? imageSize.width * aspect : imageSize.width)
+            let cropHeight: CGFloat = floor(displayHeight * imageScale)
+            
+            let left: CGFloat = (imageSize.width - cropWidth) / 2
+            let top: CGFloat = (imageSize.height - cropHeight) / 2
+            
+            let trimRect : CGRect = CGRectMake(left, top, cropWidth, cropHeight)
+            self.image = baseImage.trim(trimRect: trimRect)
+            self.frame = CGRectMake(0, 0, screenSize.width, displayHeight)
+        }
+    }
+}

+ 33 - 0
Gasteizko Margolariak/UITableViewExtension.swift

@@ -0,0 +1,33 @@
+//
+//  TableViewExtension.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 1/22/15.
+//  Copyright (c) 2015 Yuji Hato. All rights reserved.
+//
+import UIKit
+
+public extension UITableView {
+    
+    func registerCellClass(cellClass: AnyClass) {
+        let identifier = String.className(cellClass)
+        self.registerClass(cellClass, forCellReuseIdentifier: identifier)
+    }
+    
+    func registerCellNib(cellClass: AnyClass) {
+        let identifier = String.className(cellClass)
+        let nib = UINib(nibName: identifier, bundle: nil)
+        self.registerNib(nib, forCellReuseIdentifier: identifier)
+    }
+    
+    func registerHeaderFooterViewClass(viewClass: AnyClass) {
+        let identifier = String.className(viewClass)
+        self.registerClass(viewClass, forHeaderFooterViewReuseIdentifier: identifier)
+    }
+    
+    func registerHeaderFooterViewNib(viewClass: AnyClass) {
+        let identifier = String.className(viewClass)
+        let nib = UINib(nibName: identifier, bundle: nil)
+        self.registerNib(nib, forHeaderFooterViewReuseIdentifier: identifier)
+    }
+}

+ 20 - 0
Gasteizko Margolariak/UIView.swift

@@ -0,0 +1,20 @@
+//
+//  UIView.swift
+//  Gasetizko Margolariak
+//
+//  Created by Yuji Hato on 11/5/15.
+//  Copyright © 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+extension UIView {
+    class func loadNib<T: UIView>(viewType: T.Type) -> T {
+        let className = String.className(viewType)
+        return NSBundle(forClass: viewType).loadNibNamed(className, owner: nil, options: nil).first as! T
+    }
+    
+    class func loadNib() -> Self {
+        return loadNib(self)
+    }
+}

+ 28 - 0
Gasteizko Margolariak/UIViewController.swift

@@ -0,0 +1,28 @@
+//
+//  UIViewControllerExtension.swift
+//  Gasteizko Margolariak
+//
+//  Created by Yuji Hato on 1/19/15.
+//  Copyright (c) 2015 Yuji Hato. All rights reserved.
+//
+
+import UIKit
+
+extension UIViewController {
+    
+    func setNavigationBarItem() {
+        self.addLeftBarButtonWithImage(UIImage(named: "ic_menu_black_24dp")!)
+        self.addRightBarButtonWithImage(UIImage(named: "ic_notifications_black_24dp")!)
+        self.slideMenuController()?.removeLeftGestures()
+        self.slideMenuController()?.removeRightGestures()
+        self.slideMenuController()?.addLeftGestures()
+        self.slideMenuController()?.addRightGestures()
+    }
+    
+    func removeNavigationBarItem() {
+        self.navigationItem.leftBarButtonItem = nil
+        self.navigationItem.rightBarButtonItem = nil
+        self.slideMenuController()?.removeLeftGestures()
+        self.slideMenuController()?.removeRightGestures()
+    }
+}

二进制
Gasteizko Margolariak/res/ic_menu_black_24dp.png


二进制
Gasteizko Margolariak/res/ic_menu_black_24dp@2x.png


二进制
Gasteizko Margolariak/res/ic_menu_black_24dp@3x.png


二进制
Gasteizko Margolariak/res/ic_notifications_black_24dp.png


二进制
Gasteizko Margolariak/res/ic_notifications_black_24dp@2x.png


二进制
Gasteizko Margolariak/res/ic_notifications_black_24dp@3x.png