Преглед на файлове

Apex Mobile
部分新界面及临时图标

Ray Zhang преди 8 години
родител
ревизия
4aeb79a6ab
променени са 87 файла, в които са добавени 1989 реда и са изтрити 27 реда
  1. 141 7
      Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj
  2. BIN
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate
  3. 81 1
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 14 7
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/Apex Mobile.xcscheme
  5. 7 7
      Apex Mobile/Apex Mobile/Apex Mobile-Info.plist
  6. 4 4
      Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard
  7. 13 0
      Apex Mobile/Apex Mobile/HomeViewController.h
  8. 37 0
      Apex Mobile/Apex Mobile/HomeViewController.m
  9. 25 0
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/Contents.json
  10. 22 0
      Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/Contents.json
  11. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/second.png
  12. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/second@2x.png
  13. 22 0
      Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/Contents.json
  14. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/first.png
  15. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/first@2x.png
  16. 21 0
      Apex Mobile/Apex Mobile/Images.xcassets/login.imageset/Contents.json
  17. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/login.imageset/in.png
  18. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/Contents.json
  19. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon-1.png
  20. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon-2.png
  21. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon.png
  22. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/Contents.json
  23. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon-1.png
  24. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon-2.png
  25. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon.png
  26. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/Contents.json
  27. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon-1.png
  28. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon-2.png
  29. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon.png
  30. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/Contents.json
  31. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon-1.png
  32. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon-2.png
  33. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon.png
  34. 21 0
      Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_detail.imageset/Contents.json
  35. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_detail.imageset/notes.png
  36. 21 0
      Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_search.imageset/Contents.json
  37. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_search.imageset/rect_search_history.png
  38. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/Contents.json
  39. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon-1.png
  40. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon-2.png
  41. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon.png
  42. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/Contents.json
  43. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon-1.png
  44. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon-2.png
  45. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon.png
  46. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/Contents.json
  47. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon-1.png
  48. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon-2.png
  49. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon.png
  50. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/Contents.json
  51. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon-1.png
  52. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon-2.png
  53. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon.png
  54. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/Contents.json
  55. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon-1.png
  56. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon-2.png
  57. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon.png
  58. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/Contents.json
  59. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon-1.png
  60. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon-2.png
  61. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon.png
  62. 21 0
      Apex Mobile/Apex Mobile/Images.xcassets/tools.imageset/Contents.json
  63. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/tools.imageset/list.png
  64. 26 0
      Apex Mobile/Apex Mobile/LoginViewController.h
  65. 216 0
      Apex Mobile/Apex Mobile/LoginViewController.m
  66. 299 0
      Apex Mobile/Apex Mobile/Main.storyboard
  67. 13 0
      Apex Mobile/Apex Mobile/MylistViewController.h
  68. 57 0
      Apex Mobile/Apex Mobile/MylistViewController.m
  69. 13 0
      Apex Mobile/Apex Mobile/OrderHistoryViewController.h
  70. 37 0
      Apex Mobile/Apex Mobile/OrderHistoryViewController.m
  71. 24 0
      Apex Mobile/Apex Mobile/RootViewController.h
  72. 79 0
      Apex Mobile/Apex Mobile/RootViewController.m
  73. 13 0
      Apex Mobile/Apex Mobile/SearchlistViewController.h
  74. 57 0
      Apex Mobile/Apex Mobile/SearchlistViewController.m
  75. 13 0
      Apex Mobile/Apex Mobile/StaticModeTableViewCell.h
  76. 24 0
      Apex Mobile/Apex Mobile/StaticModeTableViewCell.m
  77. 30 0
      Apex Mobile/Apex Mobile/StaticModeTableViewCell.xib
  78. 15 0
      Apex Mobile/Apex Mobile/StaticModelistViewController.h
  79. 131 0
      Apex Mobile/Apex Mobile/StaticModelistViewController.m
  80. 46 0
      Apex Mobile/Apex Mobile/StaticModelistViewController.xib
  81. 13 0
      Apex Mobile/Apex Mobile/ToolslistViewController.h
  82. 87 0
      Apex Mobile/Apex Mobile/ToolslistViewController.m
  83. 44 0
      Apex Mobile/Apex Mobile/my.json
  84. 3 0
      Apex Mobile/Apex Mobile/readme.txt
  85. 31 0
      Apex Mobile/Apex Mobile/search.json
  86. 37 0
      Apex Mobile/Apex Mobile/tools.json
  87. 1 1
      Apex Mobile/Apex MobileTests/Apex MobileTests-Info.plist

+ 141 - 7
Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj

@@ -43,6 +43,22 @@
 		714C39B81922FEE1004F045B /* NewsDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 714C39B71922FEE1004F045B /* NewsDetailViewController.m */; };
 		714C39BF19234065004F045B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 714C39C119234065004F045B /* Localizable.strings */; };
 		71514ED2191B7E2500009C00 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71514ED1191B7E2500009C00 /* AddressBookUI.framework */; };
+		715643B720198A1400B04267 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 715643B620198A1400B04267 /* Main.storyboard */; };
+		715643BB20198A9900B04267 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643BA20198A9900B04267 /* RootViewController.m */; };
+		715643BE2019AA9B00B04267 /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643BD2019AA9B00B04267 /* LoginViewController.m */; };
+		715643C12019B27500B04267 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643C02019B27500B04267 /* HomeViewController.m */; };
+		715643C42019B58400B04267 /* OrderHistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643C32019B58400B04267 /* OrderHistoryViewController.m */; };
+		715643C72019BB6700B04267 /* StaticModelistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643C62019BB6700B04267 /* StaticModelistViewController.m */; };
+		715643CA2019BC4C00B04267 /* SearchlistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643C92019BC4C00B04267 /* SearchlistViewController.m */; };
+		715643CD2019BC6C00B04267 /* ToolslistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643CC2019BC6C00B04267 /* ToolslistViewController.m */; };
+		715643D02019BCCE00B04267 /* MylistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643CF2019BCCE00B04267 /* MylistViewController.m */; };
+		715643D3201ACB1700B04267 /* StaticModeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 715643D2201ACB1700B04267 /* StaticModeTableViewCell.m */; };
+		715643D5201AD2AB00B04267 /* StaticModelistViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 715643D4201AD2AB00B04267 /* StaticModelistViewController.xib */; };
+		715643D7201AD99300B04267 /* StaticModeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 715643D6201AD99300B04267 /* StaticModeTableViewCell.xib */; };
+		715643DA201C079F00B04267 /* tools.json in Resources */ = {isa = PBXBuildFile; fileRef = 715643D9201C079F00B04267 /* tools.json */; };
+		715643DC201C117300B04267 /* search.json in Resources */ = {isa = PBXBuildFile; fileRef = 715643DB201C117300B04267 /* search.json */; };
+		715643DE201C1AE600B04267 /* my.json in Resources */ = {isa = PBXBuildFile; fileRef = 715643DD201C1AE600B04267 /* my.json */; };
+		7162546B201C3AF1009E3A41 /* readme.txt in Resources */ = {isa = PBXBuildFile; fileRef = 7162546A201C3AF1009E3A41 /* readme.txt */; };
 		716FF7921904ED2600ED6C3D /* NewsData.m in Sources */ = {isa = PBXBuildFile; fileRef = 716FF7911904ED2600ED6C3D /* NewsData.m */; };
 		716FF7951904FBC600ED6C3D /* NewsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 716FF7941904FBC600ED6C3D /* NewsTableViewCell.m */; };
 		717D76EB18C7F8120070302D /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 717D76EA18C7F8120070302D /* Reachability.m */; };
@@ -174,6 +190,31 @@
 		714C39C019234065004F045B /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
 		714C39C31923406F004F045B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		71514ED1191B7E2500009C00 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
+		715643B620198A1400B04267 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
+		715643B920198A9900B04267 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = "<group>"; };
+		715643BA20198A9900B04267 /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = "<group>"; };
+		715643BC2019AA9B00B04267 /* LoginViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
+		715643BD2019AA9B00B04267 /* LoginViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
+		715643BF2019B27500B04267 /* HomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
+		715643C02019B27500B04267 /* HomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
+		715643C22019B58400B04267 /* OrderHistoryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OrderHistoryViewController.h; sourceTree = "<group>"; };
+		715643C32019B58400B04267 /* OrderHistoryViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OrderHistoryViewController.m; sourceTree = "<group>"; };
+		715643C52019BB6700B04267 /* StaticModelistViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StaticModelistViewController.h; sourceTree = "<group>"; };
+		715643C62019BB6700B04267 /* StaticModelistViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StaticModelistViewController.m; sourceTree = "<group>"; };
+		715643C82019BC4C00B04267 /* SearchlistViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchlistViewController.h; sourceTree = "<group>"; };
+		715643C92019BC4C00B04267 /* SearchlistViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SearchlistViewController.m; sourceTree = "<group>"; };
+		715643CB2019BC6C00B04267 /* ToolslistViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ToolslistViewController.h; sourceTree = "<group>"; };
+		715643CC2019BC6C00B04267 /* ToolslistViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ToolslistViewController.m; sourceTree = "<group>"; };
+		715643CE2019BCCE00B04267 /* MylistViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MylistViewController.h; sourceTree = "<group>"; };
+		715643CF2019BCCE00B04267 /* MylistViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MylistViewController.m; sourceTree = "<group>"; };
+		715643D1201ACB1700B04267 /* StaticModeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StaticModeTableViewCell.h; sourceTree = "<group>"; };
+		715643D2201ACB1700B04267 /* StaticModeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StaticModeTableViewCell.m; sourceTree = "<group>"; };
+		715643D4201AD2AB00B04267 /* StaticModelistViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StaticModelistViewController.xib; sourceTree = "<group>"; };
+		715643D6201AD99300B04267 /* StaticModeTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StaticModeTableViewCell.xib; sourceTree = "<group>"; };
+		715643D9201C079F00B04267 /* tools.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = tools.json; sourceTree = "<group>"; };
+		715643DB201C117300B04267 /* search.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = search.json; sourceTree = "<group>"; };
+		715643DD201C1AE600B04267 /* my.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = my.json; sourceTree = "<group>"; };
+		7162546A201C3AF1009E3A41 /* readme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = readme.txt; sourceTree = "<group>"; };
 		716FF7901904ED2600ED6C3D /* NewsData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewsData.h; sourceTree = "<group>"; };
 		716FF7911904ED2600ED6C3D /* NewsData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewsData.m; sourceTree = "<group>"; };
 		716FF7931904FBC600ED6C3D /* NewsTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewsTableViewCell.h; sourceTree = "<group>"; };
@@ -348,6 +389,45 @@
 			name = documents;
 			sourceTree = "<group>";
 		};
+		715643B820198A6000B04267 /* new */ = {
+			isa = PBXGroup;
+			children = (
+				7162546A201C3AF1009E3A41 /* readme.txt */,
+				715643D8201C057E00B04267 /* ModeList */,
+				715643B920198A9900B04267 /* RootViewController.h */,
+				715643BA20198A9900B04267 /* RootViewController.m */,
+				715643BC2019AA9B00B04267 /* LoginViewController.h */,
+				715643BD2019AA9B00B04267 /* LoginViewController.m */,
+				715643BF2019B27500B04267 /* HomeViewController.h */,
+				715643C02019B27500B04267 /* HomeViewController.m */,
+				715643C22019B58400B04267 /* OrderHistoryViewController.h */,
+				715643C32019B58400B04267 /* OrderHistoryViewController.m */,
+				715643C52019BB6700B04267 /* StaticModelistViewController.h */,
+				715643C62019BB6700B04267 /* StaticModelistViewController.m */,
+				715643D4201AD2AB00B04267 /* StaticModelistViewController.xib */,
+				715643D1201ACB1700B04267 /* StaticModeTableViewCell.h */,
+				715643D2201ACB1700B04267 /* StaticModeTableViewCell.m */,
+				715643D6201AD99300B04267 /* StaticModeTableViewCell.xib */,
+				715643C82019BC4C00B04267 /* SearchlistViewController.h */,
+				715643C92019BC4C00B04267 /* SearchlistViewController.m */,
+				715643CB2019BC6C00B04267 /* ToolslistViewController.h */,
+				715643CC2019BC6C00B04267 /* ToolslistViewController.m */,
+				715643CE2019BCCE00B04267 /* MylistViewController.h */,
+				715643CF2019BCCE00B04267 /* MylistViewController.m */,
+			);
+			name = new;
+			sourceTree = "<group>";
+		};
+		715643D8201C057E00B04267 /* ModeList */ = {
+			isa = PBXGroup;
+			children = (
+				715643D9201C079F00B04267 /* tools.json */,
+				715643DB201C117300B04267 /* search.json */,
+				715643DD201C1AE600B04267 /* my.json */,
+			);
+			name = ModeList;
+			sourceTree = "<group>";
+		};
 		719A51A618C5A4E40080C075 /* CustomUI */ = {
 			isa = PBXGroup;
 			children = (
@@ -565,6 +645,7 @@
 		719EF8E618BB839F00EFFF5F /* Apex Mobile */ = {
 			isa = PBXGroup;
 			children = (
+				715643B820198A6000B04267 /* new */,
 				71C72714191CFF11001127E0 /* message */,
 				713AA79E1917366A00B44092 /* documents */,
 				719BEC1418FFA60800DFE987 /* tools */,
@@ -584,6 +665,7 @@
 				719EF8EF18BB839F00EFFF5F /* ApexMobileAppDelegate.h */,
 				719EF8F018BB839F00EFFF5F /* ApexMobileAppDelegate.m */,
 				719EF8F218BB839F00EFFF5F /* Main_iPhone.storyboard */,
+				715643B620198A1400B04267 /* Main.storyboard */,
 				719EF8F818BB839F00EFFF5F /* ApexMobileFirstViewController.h */,
 				719EF8F918BB839F00EFFF5F /* ApexMobileFirstViewController.m */,
 				71CEE3D518CC559B00052C63 /* ApexMobileNavigationController.h */,
@@ -716,11 +798,12 @@
 			isa = PBXProject;
 			attributes = {
 				CLASSPREFIX = ApexMobile;
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0920;
 				ORGANIZATIONNAME = "United Software Applications, Inc";
 				TargetAttributes = {
 					719EF8DC18BB839F00EFFF5F = {
 						DevelopmentTeam = HXWLAA5YN5;
+						ProvisioningStyle = Automatic;
 					};
 					719EF90318BB839F00EFFF5F = {
 						TestTargetID = 719EF8DC18BB839F00EFFF5F;
@@ -752,12 +835,19 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				7162546B201C3AF1009E3A41 /* readme.txt in Resources */,
+				715643DC201C117300B04267 /* search.json in Resources */,
 				719EF8FF18BB839F00EFFF5F /* Images.xcassets in Resources */,
 				719EF8F418BB839F00EFFF5F /* Main_iPhone.storyboard in Resources */,
+				715643DE201C1AE600B04267 /* my.json in Resources */,
 				71286AB518C70061001FDF43 /* LICENSE in Resources */,
+				715643D7201AD99300B04267 /* StaticModeTableViewCell.xib in Resources */,
 				71DA74A818BDDFB5003B46A6 /* about.htm in Resources */,
 				714C39BF19234065004F045B /* Localizable.strings in Resources */,
 				71286AB918C70061001FDF43 /* README.md in Resources */,
+				715643DA201C079F00B04267 /* tools.json in Resources */,
+				715643D5201AD2AB00B04267 /* StaticModelistViewController.xib in Resources */,
+				715643B720198A1400B04267 /* Main.storyboard in Resources */,
 				719EF8EB18BB839F00EFFF5F /* InfoPlist.strings in Resources */,
 				71F57D8019CD5C320014C893 /* GoogleMaps.bundle in Resources */,
 			);
@@ -778,6 +868,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				715643D3201ACB1700B04267 /* StaticModeTableViewCell.m in Sources */,
 				718BE8B2190F9D970046EA6A /* MyAutocompleteItemsSource.m in Sources */,
 				71406DCE18C36A52000914C4 /* TableCellBool.m in Sources */,
 				71A01D7F18C9AEC8003307A9 /* DetailCellWeb.m in Sources */,
@@ -790,14 +881,17 @@
 				71DA6047190A00F600683003 /* FavoritesData.m in Sources */,
 				71A01D7C18C9AE97003307A9 /* DetailCellList.m in Sources */,
 				71DA74A618BDDD31003B46A6 /* AboutViewController.m in Sources */,
+				715643C42019B58400B04267 /* OrderHistoryViewController.m in Sources */,
 				712CBA0318CF38DB00C61394 /* RTLabel.m in Sources */,
 				71CEE3D718CC559B00052C63 /* ApexMobileNavigationController.m in Sources */,
 				71BA50371908F21500D0BD31 /* HistoryData.m in Sources */,
 				71A541D418D151C70017E2BD /* WebViewController.m in Sources */,
 				71330C2018BCC4DA0048956C /* FunctionSelectViewController.m in Sources */,
+				715643D02019BCCE00B04267 /* MylistViewController.m in Sources */,
 				718BE8B4190F9D970046EA6A /* MySuggestion.m in Sources */,
 				719EF8FD18BB839F00EFFF5F /* ApexMobileSecondViewController.m in Sources */,
 				71AE427318C47AF900B8EC3D /* SearchViewController.m in Sources */,
+				715643BE2019AA9B00B04267 /* LoginViewController.m in Sources */,
 				71308AF7191E7B0E0024B2B0 /* MessageDetailItem.m in Sources */,
 				71A565D918C20F5900CDAC07 /* SearchTableAdapter.m in Sources */,
 				719EF8FA18BB839F00EFFF5F /* ApexMobileFirstViewController.m in Sources */,
@@ -809,9 +903,12 @@
 				71CEE38A18CB749E00052C63 /* DetailPageViewController.m in Sources */,
 				71286AB618C70061001FDF43 /* NSData+Base64.m in Sources */,
 				719E7E3318C0368A003408FF /* ApexMobileDB.m in Sources */,
+				715643C12019B27500B04267 /* HomeViewController.m in Sources */,
+				715643C72019BB6700B04267 /* StaticModelistViewController.m in Sources */,
 				719E7E3018C015D0003408FF /* ApexMobileNetwork.m in Sources */,
 				719EF8F118BB839F00EFFF5F /* ApexMobileAppDelegate.m in Sources */,
 				714C39B81922FEE1004F045B /* NewsDetailViewController.m in Sources */,
+				715643CD2019BC6C00B04267 /* ToolslistViewController.m in Sources */,
 				712A301318CFEF550022E6E6 /* CustomizeFieldViewController.m in Sources */,
 				716FF7921904ED2600ED6C3D /* NewsData.m in Sources */,
 				71F67CF619063612004E8462 /* ApexHistoryViewController.m in Sources */,
@@ -827,8 +924,10 @@
 				71A003FC18D680560057CDFD /* RetrievePasswordViewController.m in Sources */,
 				71F67CF919065EA8004E8462 /* SimpleMenu.m in Sources */,
 				719A51BA18C5AB7B0080C075 /* SimpleGridComponent.m in Sources */,
+				715643BB20198A9900B04267 /* RootViewController.m in Sources */,
 				719EF8ED18BB839F00EFFF5F /* main.m in Sources */,
 				717D76EB18C7F8120070302D /* Reachability.m in Sources */,
+				715643CA2019BC4C00B04267 /* SearchlistViewController.m in Sources */,
 				7120DD0418BE273900E7546F /* LocationViewController.m in Sources */,
 				71308AFA191E7B2A0024B2B0 /* MessageDetailViewController.m in Sources */,
 				71286AB418C70061001FDF43 /* AESCrypt.m in Sources */,
@@ -906,23 +1005,36 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CODE_SIGN_IDENTITY = "iPhone Distribution: United Software Applications, Inc (HXWLAA5YN5)";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: United Software Applications, Inc (HXWLAA5YN5)";
 				COPY_PHASE_STRIP = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUG=1",
@@ -935,7 +1047,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 1;
@@ -946,30 +1058,42 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CODE_SIGN_IDENTITY = "iPhone Distribution: United Software Applications, Inc (HXWLAA5YN5)";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: United Software Applications, Inc (HXWLAA5YN5)";
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
 				GCC_WARN_UNDECLARED_SELECTOR = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 1;
 				VALIDATE_PRODUCT = YES;
@@ -983,6 +1107,8 @@
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = "";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					/xcode_workspace/ERPSuiteIOS/Apex,
@@ -996,11 +1122,13 @@
 					"$(inherited)",
 				);
 				INFOPLIST_FILE = "Apex Mobile/Apex Mobile-Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = "usai.apex.$(PRODUCT_NAME:rfc1034identifier)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE = "";
 				"PROVISIONING_PROFILE[sdk=*]" = "";
+				PROVISIONING_PROFILE_SPECIFIER = "";
 				TARGETED_DEVICE_FAMILY = 1;
 				"VALID_ARCHS[sdk=*]" = "arm64 armv7 armv7s";
 				WRAPPER_EXTENSION = app;
@@ -1013,7 +1141,9 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
 				CODE_SIGN_IDENTITY = "iPhone Distribution";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = "";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					/xcode_workspace/ERPSuiteIOS/Apex,
@@ -1023,10 +1153,12 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
 				INFOPLIST_FILE = "Apex Mobile/Apex Mobile-Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = "usai.apex.$(PRODUCT_NAME:rfc1034identifier)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				PROVISIONING_PROFILE = "a37b4fbd-4124-4260-b15a-f06c84092ccb";
+				PROVISIONING_PROFILE = "";
+				PROVISIONING_PROFILE_SPECIFIER = "";
 				TARGETED_DEVICE_FAMILY = 1;
 				WRAPPER_EXTENSION = app;
 			};
@@ -1048,6 +1180,7 @@
 					"$(inherited)",
 				);
 				INFOPLIST_FILE = "Apex MobileTests/Apex MobileTests-Info.plist";
+				PRODUCT_BUNDLE_IDENTIFIER = "usai.apex.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				TEST_HOST = "$(BUNDLE_LOADER)";
 				WRAPPER_EXTENSION = xctest;
@@ -1066,6 +1199,7 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
 				INFOPLIST_FILE = "Apex MobileTests/Apex MobileTests-Info.plist";
+				PRODUCT_BUNDLE_IDENTIFIER = "usai.apex.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				TEST_HOST = "$(BUNDLE_LOADER)";
 				WRAPPER_EXTENSION = xctest;

BIN
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 81 - 1
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -26,7 +26,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Apex Mobile/DetailPageViewController.m"
-            timestampString = "535530504.436632"
+            timestampString = "538297237.276861"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "544"
@@ -35,5 +35,85 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/ApexMobileFirstViewController.m"
+            timestampString = "538552834.9969749"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "32"
+            endingLineNumber = "32"
+            landmarkName = "-LoginButtonClick:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/ApexMobileFirstViewController.m"
+            timestampString = "538552834.997056"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "56"
+            endingLineNumber = "56"
+            landmarkName = "-LoginButtonClick:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/LoginViewController.m"
+            timestampString = "538713952.006256"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "53"
+            endingLineNumber = "53"
+            landmarkName = "-LoginButtonClick:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/StaticModelistViewController.m"
+            timestampString = "538713952.006331"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "64"
+            endingLineNumber = "64"
+            landmarkName = "-tableView:numberOfRowsInSection:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/ToolslistViewController.m"
+            timestampString = "538713952.0064059"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "72"
+            endingLineNumber = "72"
+            landmarkName = "-LoadModelist"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 14 - 7
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/Apex Mobile.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0510"
+   LastUpgradeVersion = "0920"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -23,10 +23,11 @@
       </BuildActionEntries>
    </BuildAction>
    <TestAction
+      buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      buildConfiguration = "Debug">
+      language = ""
+      shouldUseLaunchSchemeArgsEnv = "YES">
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -48,17 +49,22 @@
             ReferencedContainer = "container:Apex Mobile.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
    </TestAction>
    <LaunchAction
+      buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      language = ""
       launchStyle = "0"
       useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
       allowLocationSimulation = "YES">
-      <BuildableProductRunnable>
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
          <BuildableReference
             BuildableIdentifier = "primary"
             BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"
@@ -71,12 +77,13 @@
       </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
+      buildConfiguration = "Release"
       shouldUseLaunchSchemeArgsEnv = "YES"
       savedToolIdentifier = ""
       useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Release"
       debugDocumentVersioning = "YES">
-      <BuildableProductRunnable>
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
          <BuildableReference
             BuildableIdentifier = "primary"
             BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"

+ 7 - 7
Apex Mobile/Apex Mobile/Apex Mobile-Info.plist

@@ -9,7 +9,7 @@
 	<key>CFBundleExecutable</key>
 	<string>${EXECUTABLE_NAME}</string>
 	<key>CFBundleIdentifier</key>
-	<string>usai.apex.$(PRODUCT_NAME:rfc1034identifier)</string>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
@@ -24,10 +24,15 @@
 	<string>150829</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
 	<key>UIFileSharingEnabled</key>
 	<true/>
 	<key>UIMainStoryboardFile</key>
-	<string>Main_iPhone</string>
+	<string>Main</string>
 	<key>UIMainStoryboardFile~ipad</key>
 	<string>Main_iPhone</string>
 	<key>UIRequiredDeviceCapabilities</key>
@@ -57,10 +62,5 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
-    <key>NSAppTransportSecurity</key>
-    <dict>
-        <key>NSAllowsArbitraryLoads</key>
-        <true/>
-    </dict>
 </dict>
 </plist>

+ 4 - 4
Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES" initialViewController="Lfr-X7-cX2">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES" initialViewController="Lfr-X7-cX2">
     <device id="retina4_7" orientation="portrait">
         <adaptation id="fullscreen"/>
     </device>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <customFonts key="customFonts">
@@ -114,7 +114,7 @@
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="hGV-SK-LOF" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="306" y="-1742"/>
+            <point key="canvasLocation" x="354" y="-1743"/>
         </scene>
         <!--News View Controller-->
         <scene sceneID="cyu-YE-0rC">
@@ -603,7 +603,6 @@
         <!--DataPickerViewController-->
         <scene sceneID="XVW-bH-dHx">
             <objects>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="dgB-U9-z4r" userLabel="First Responder" sceneMemberID="firstResponder"/>
                 <tableViewController storyboardIdentifier="DataPickerViewController" title="DataPickerViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="dvF-wq-viV" customClass="DataPickerViewController" sceneMemberID="viewController">
                     <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="yc6-ab-bkU">
                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
@@ -700,6 +699,7 @@
                         <outlet property="datepicker" destination="Z5G-Y5-ds6" id="O0L-5k-Raj"/>
                     </connections>
                 </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dgB-U9-z4r" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
             <point key="canvasLocation" x="-61" y="142"/>
         </scene>

+ 13 - 0
Apex Mobile/Apex Mobile/HomeViewController.h

@@ -0,0 +1,13 @@
+//
+//  HomeViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface HomeViewController : UIViewController
+
+@end

+ 37 - 0
Apex Mobile/Apex Mobile/HomeViewController.m

@@ -0,0 +1,37 @@
+//
+//  HomeViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "HomeViewController.h"
+
+@interface HomeViewController ()
+
+@end
+
+@implementation HomeViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 25 - 0
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -1,5 +1,15 @@
 {
   "images" : [
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "3x"
+    },
     {
       "size" : "29x29",
       "idiom" : "iphone",
@@ -33,6 +43,16 @@
       "size" : "60x60",
       "scale" : "3x"
     },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
     {
       "size" : "29x29",
       "idiom" : "ipad",
@@ -73,6 +93,11 @@
       "idiom" : "ipad",
       "size" : "83.5x83.5",
       "scale" : "2x"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "size" : "1024x1024",
+      "scale" : "1x"
     }
   ],
   "info" : {

+ 22 - 0
Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/second.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/history.imageset/second@2x.png


+ 22 - 0
Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/first.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/home.imageset/first@2x.png


+ 21 - 0
Apex Mobile/Apex Mobile/Images.xcassets/login.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/login.imageset/in.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_bl.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_booking.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_container.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_document.imageset/appicon.png


+ 21 - 0
Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_detail.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_detail.imageset/notes.png


+ 21 - 0
Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_search.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/rect_saved_search.imageset/rect_search_history.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_history.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_home.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_login.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_my.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_search.imageset/appicon.png


+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/tab_tools.imageset/appicon.png


+ 21 - 0
Apex Mobile/Apex Mobile/Images.xcassets/tools.imageset/Contents.json

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

BIN
Apex Mobile/Apex Mobile/Images.xcassets/tools.imageset/list.png


+ 26 - 0
Apex Mobile/Apex Mobile/LoginViewController.h

@@ -0,0 +1,26 @@
+//
+//  LoginViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ApexMobileNetwork.h"
+#import "AESCrypt.h"
+#import "Constant.h"
+
+@interface LoginViewController : UIViewController<UITextFieldDelegate>
+
+@property (nonatomic , copy) void (^loginSuccessful)(void);
+@property (strong, nonatomic) IBOutlet UIButton *checkSavePassword;
+@property (strong, nonatomic) IBOutlet UITextField *editUser;
+@property (strong, nonatomic) IBOutlet UITextField *editPassword;
+@property (strong, nonatomic) IBOutlet UIButton *loginButton;
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+@property (strong, nonatomic) IBOutlet UIButton *btnRetrievePassword;
+@property bool resize;
+@property int ioffset;
+@end
+

+ 216 - 0
Apex Mobile/Apex Mobile/LoginViewController.m

@@ -0,0 +1,216 @@
+//
+//  LoginViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "LoginViewController.h"
+
+@interface LoginViewController ()
+
+@end
+
+@implementation LoginViewController
+
+- (IBAction)RetrieveButtonClick:(UIButton *)sender {
+    [self performSegueWithIdentifier:@"RETRIEVE" sender:self];
+}
+
+
+- (IBAction)LoginButtonClick:(UIButton *)sender {
+    
+    
+    
+    NSString*password= self.editPassword.text;
+    NSString*user = self.editUser.text;
+    if(user.length==0||password.length==0)
+    {
+        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: NSLocalizedString(@"alert_title_error", nil) message:NSLocalizedString(@"alert_msg_upcanotempty", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", nil) otherButtonTitles:nil, nil];
+        //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", nil) , nil];
+        [alert show];
+        return;
+    }
+    DebugLog(@"Login...   user= %@ ; password= %@",self.editUser.text,self.editPassword.text);
+    
+    
+    self.loginButton.enabled = false;
+    self.mum.hidden=false;
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        
+        int ret=[ApexMobileNetwork Authorize:self.editUser.text password:self.editPassword.text];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            self.mum.hidden=true;
+            self.loginButton.enabled = true;
+            
+            if (ret==RESULT_TRUE)
+            {
+                
+                NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+                [defaults removeObjectForKey:@"user"];
+                [defaults removeObjectForKey:@"password"];
+                //                if(self.checkSavePassword.selected)
+                {
+                    
+                    
+                    [defaults setValue:[AESCrypt encrypt:self.editUser.text password:@"usai"] forKey:@"user"];
+                    [defaults setValue:[AESCrypt encrypt:self.editPassword.text password:@"usai"] forKey:@"password"];
+                    [defaults setBool:TRUE forKey:@"autologin"];
+                }
+                [defaults synchronize];
+                
+                if(self.loginSuccessful)
+                    self.loginSuccessful();
+//                [self dismissViewControllerAnimated:true completion:^{
+//                    ;
+//                }];
+                
+                //                [self performSegueWithIdentifier:@"LOGIN" sender:self];
+                
+                
+            }
+            else
+            {
+                //                int a = RESULT_NET_NOTAVAILABLE;
+                NSString* message = nil;
+                switch (ret) {
+                    case RESULT_NET_NOTAVAILABLE:
+                        message = NSLocalizedString(@"net_not_available", nil);
+                        break;
+                    case RESULT_NET_ERROR:
+                        message = NSLocalizedString(@"net_error", nil);
+                        break;
+                    case RESULT_FALSE:
+                        message = NSLocalizedString(@"auth_error", nil);
+                        break;
+                    case RESULT_VER_LOW:
+                        message = NSLocalizedString(@"ver_low", nil);
+                        break;
+                        
+                    default:
+                        message=[NSString stringWithFormat:@"Failed to login code %d",ret];
+                        break;
+                }
+                UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"alert_title_error", nil) message:message delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", nil) otherButtonTitles:nil, nil];
+                [alert show];
+            }
+            
+            
+            
+        });
+    });
+    
+    
+    
+}
+
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
+    [[self view] endEditing:YES];
+}
+
+-(void)checkboxClick:(UIButton *)btn
+{
+    btn.selected = !btn.selected;
+}
+//- (IBAction)onRetrievePassword:(UIButton *)sender {
+//}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    [self.checkSavePassword setImage:[UIImage imageNamed:@"unchecked_32.png"] forState:UIControlStateNormal];
+    [self.checkSavePassword setImage:[UIImage imageNamed:@"checked_32.png"] forState:UIControlStateSelected];
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    NSString * user = [AESCrypt decrypt:[defaults stringForKey:@"user"] password:@"usai"];
+    
+    self.editUser.delegate = self;
+    self.editPassword.delegate = self;
+    self.resize = false;
+    self.ioffset = 0;
+    NSString * password = [AESCrypt decrypt:[defaults stringForKey:@"password"] password:@"usai"];
+    
+    if(user.length>0&&password.length>0)
+    {
+        self.editUser.text=user;
+        self.editPassword.text=password;
+        self.checkSavePassword.selected=true;
+        
+    }
+    
+    self.title=@"Login";
+    
+    
+    [self.checkSavePassword addTarget:self action:@selector(checkboxClick:) forControlEvents:UIControlEventTouchUpInside];
+    //    [self.view addSubview:checkSavePassword];
+    // Do any additional setup after loading the view, typically from a nib.
+}
+
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+-(BOOL)textFieldShouldReturn:(UITextField *)textField {
+    
+    [textField resignFirstResponder];
+    return YES;
+}
+-(void) textFieldDidBeginEditing:(UITextField *)textField
+{
+    //    CGRect textFrame =  self.loginButton.frame;
+    int loginpos = self.loginButton.frame.origin.y+self.loginButton.frame.size.height;
+    self.ioffset = 216 -(self.view.frame.size.height-loginpos);
+    if(self.ioffset>0)
+    {
+        self.resize = true;
+        NSTimeInterval animationDuration = 0.30f;
+        CGRect frame = self.view.frame;
+        frame.origin.y -=self.ioffset;//view的Y轴上移
+        frame.size.height +=self.ioffset; //View的高度增加
+        self.view.frame = frame;
+        [UIView beginAnimations:@"ResizeView" context:nil];
+        [UIView setAnimationDuration:animationDuration];
+        self.view.frame = frame;
+        [UIView commitAnimations];//设置调整界面的动画效果
+    }
+}
+
+/**
+ 结束编辑UITextField的方法,让原来的界面还原高度
+ */
+-(void) textFieldDidEndEditing:(UITextField *)textField
+{
+    //    if(prewTag == -1) //当编辑的View不是需要移动的View
+    //    {
+    //        return;
+    //    }
+    //    float moveY ;
+    
+    if(self.resize)
+    {
+        NSTimeInterval animationDuration = 0.30f;
+        CGRect frame = self.view.frame;
+        //    if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动
+        //    {   //还原界面
+        //        moveY =  prewMoveY;
+        frame.origin.y +=self.ioffset;
+        frame.size. height -=self.ioffset;
+        self.view.frame = frame;
+        //    }
+        //self.view移回原位置
+        [UIView beginAnimations:@"ResizeView" context:nil];
+        [UIView setAnimationDuration:animationDuration];
+        self.view.frame = frame;
+        [UIView commitAnimations];
+        [textField resignFirstResponder];
+        self.ioffset=0;
+    }
+    
+}
+@end

+ 299 - 0
Apex Mobile/Apex Mobile/Main.storyboard

@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="YOs-rL-bRV">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment version="2304" identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Navigation Controller-->
+        <scene sceneID="n3W-k5-9pt">
+            <objects>
+                <navigationController id="YOs-rL-bRV" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="Cv3-js-Kre">
+                        <rect key="frame" x="0.0" y="20" width="375" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="7vK-AZ-i5I" kind="relationship" relationship="rootViewController" id="A6e-4h-gQr"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Xjf-Lt-2DC" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1031" y="139"/>
+        </scene>
+        <!--Root View Controller-->
+        <scene sceneID="cId-ga-H5b">
+            <objects>
+                <tabBarController id="7vK-AZ-i5I" customClass="RootViewController" sceneMemberID="viewController">
+                    <navigationItem key="navigationItem" id="Vmp-in-PAH"/>
+                    <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="SzJ-El-K6u">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="49"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    </tabBar>
+                </tabBarController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="ddF-5H-vfo" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-210" y="139"/>
+        </scene>
+        <!--Search-->
+        <scene sceneID="9cQ-7l-o6s">
+            <objects>
+                <viewController storyboardIdentifier="SearchPanel" title="Search" useStoryboardIdentifierAsRestorationIdentifier="YES" id="cXn-4T-TpY" customClass="SearchlistViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="X6q-dB-qSM">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="VSo-fp-Aqt">
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <connections>
+                                    <outlet property="dataSource" destination="cXn-4T-TpY" id="hp4-PI-gpw"/>
+                                    <outlet property="delegate" destination="cXn-4T-TpY" id="m2o-zp-jFI"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="VSo-fp-Aqt" firstAttribute="bottom" secondItem="M2j-n0-SI4" secondAttribute="bottom" constant="49" id="CG1-hf-oNA"/>
+                            <constraint firstItem="VSo-fp-Aqt" firstAttribute="leading" secondItem="M2j-n0-SI4" secondAttribute="leading" id="Ivf-dw-cgl"/>
+                            <constraint firstItem="M2j-n0-SI4" firstAttribute="trailing" secondItem="VSo-fp-Aqt" secondAttribute="trailing" id="NXn-EB-eAW"/>
+                            <constraint firstItem="M2j-n0-SI4" firstAttribute="top" secondItem="VSo-fp-Aqt" secondAttribute="top" constant="20" id="lsE-VZ-KTL"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="M2j-n0-SI4"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Search" id="EFy-bO-l3i"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                    <connections>
+                        <outlet property="modeTableView" destination="VSo-fp-Aqt" id="ZTN-ke-khI"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="8ta-eh-tRe" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="656.79999999999995" y="352.17391304347831"/>
+        </scene>
+        <!--History-->
+        <scene sceneID="nh8-1Z-eFB">
+            <objects>
+                <viewController storyboardIdentifier="HistoryPanel" title="History" useStoryboardIdentifierAsRestorationIdentifier="YES" id="XAM-wb-CvU" customClass="OrderHistoryViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="QxY-X5-VD0">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <viewLayoutGuide key="safeArea" id="Ipg-Ej-dwR"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="History" image="tab_history" id="TGe-qX-0UY"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="p9x-xF-EfO" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="657" y="-328"/>
+        </scene>
+        <!--Login-->
+        <scene sceneID="2GM-04-5qw">
+            <objects>
+                <viewController storyboardIdentifier="LoginPanel" title="Login" useStoryboardIdentifierAsRestorationIdentifier="YES" id="RGM-u2-C1G" customClass="LoginViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="lHV-oi-ARt">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="dHA-PV-ECL">
+                                <rect key="frame" x="20" y="220" width="335" height="30"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="O5q-tH-vch">
+                                <rect key="frame" x="20" y="269" width="335" height="30"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vvk-xp-NJf">
+                                <rect key="frame" x="317" y="317" width="38" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <state key="normal" title="Login">
+                                    <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="LoginButtonClick:" destination="RGM-u2-C1G" eventType="touchUpInside" id="R82-Lg-fey"/>
+                                </connections>
+                            </button>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LxN-nX-R7q">
+                                <rect key="frame" x="20" y="317" width="130" height="32"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <state key="normal" title="  Save password" image="unchecked_32">
+                                    <color key="titleColor" red="0.0" green="0.50196081400000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </state>
+                            </button>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" animating="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="wIj-4p-xEI">
+                                <rect key="frame" x="210" y="318" width="20" height="20"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                            </activityIndicatorView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hzc-kg-csR">
+                                <rect key="frame" x="124" y="564" width="126" height="30"/>
+                                <state key="normal" title="Retrieve password"/>
+                                <connections>
+                                    <action selector="RetrieveButtonClick:" destination="RGM-u2-C1G" eventType="touchUpInside" id="kKP-WL-fGb"/>
+                                </connections>
+                            </button>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="apexlogo-2" translatesAutoresizingMaskIntoConstraints="NO" id="zKh-Ur-Gus">
+                                <rect key="frame" x="50" y="49" width="276" height="120"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="120" id="JPD-SD-EHj"/>
+                                    <constraint firstAttribute="width" constant="276" id="oAG-Aj-MVG"/>
+                                </constraints>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="40" maxX="0.0" maxY="-40"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="Hzc-kg-csR" firstAttribute="centerX" secondItem="sgG-UE-fQF" secondAttribute="centerX" id="Mnl-xk-TBH"/>
+                            <constraint firstItem="zKh-Ur-Gus" firstAttribute="top" secondItem="sgG-UE-fQF" secondAttribute="top" constant="29" id="NCe-W2-EeK"/>
+                            <constraint firstItem="zKh-Ur-Gus" firstAttribute="centerX" secondItem="sgG-UE-fQF" secondAttribute="centerX" id="de4-gF-h5y"/>
+                            <constraint firstItem="sgG-UE-fQF" firstAttribute="bottom" secondItem="Hzc-kg-csR" secondAttribute="bottom" constant="24" id="fbS-Mb-Anu"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="sgG-UE-fQF"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Login" image="tab_login" id="Tch-x6-pfY"/>
+                    <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
+                    <nil key="simulatedTopBarMetrics"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                    <connections>
+                        <outlet property="btnRetrievePassword" destination="Hzc-kg-csR" id="fOx-sQ-wGh"/>
+                        <outlet property="checkSavePassword" destination="LxN-nX-R7q" id="R8P-NE-7x0"/>
+                        <outlet property="editPassword" destination="O5q-tH-vch" id="ip5-px-ab1"/>
+                        <outlet property="editUser" destination="dHA-PV-ECL" id="mAU-kL-bDw"/>
+                        <outlet property="loginButton" destination="vvk-xp-NJf" id="8CI-V3-a6b"/>
+                        <outlet property="mum" destination="wIj-4p-xEI" id="3zo-bA-MZw"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Dne-E0-wdc" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="656.79999999999995" y="-1699.7001499250375"/>
+        </scene>
+        <!--Home-->
+        <scene sceneID="eIc-Na-UuH">
+            <objects>
+                <viewController storyboardIdentifier="HomePanel" title="Home" useStoryboardIdentifierAsRestorationIdentifier="YES" id="ucJ-C2-JJ8" customClass="HomeViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="ifC-vl-u6I">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6HR-cD-QDf">
+                                <rect key="frame" x="0.0" y="20" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <items>
+                                    <barButtonItem style="plain" id="YgG-oK-nME">
+                                        <searchBar key="customView" contentMode="redraw" placeholder="Search Container" id="VZb-rJ-cHv">
+                                            <rect key="frame" x="16" y="0.0" width="343" height="44"/>
+                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                            <textInputTraits key="textInputTraits"/>
+                                        </searchBar>
+                                    </barButtonItem>
+                                </items>
+                            </toolbar>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="iIl-j9-7oa">
+                                <rect key="frame" x="0.0" y="64" width="375" height="554"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <viewLayoutGuide key="safeArea" id="HNS-Qr-K3s"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Home" image="tab_home" id="OC9-MV-8nf"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Smq-yU-AsP" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="656.79999999999995" y="-1020.5397301349326"/>
+        </scene>
+        <!--Tools-->
+        <scene sceneID="xt7-Ft-PVv">
+            <objects>
+                <viewController storyboardIdentifier="ToolsPanel" useStoryboardIdentifierAsRestorationIdentifier="YES" id="pHU-MU-wJ7" customClass="ToolslistViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="MuK-Mj-PtU">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" translatesAutoresizingMaskIntoConstraints="NO" id="t4w-1J-ZSQ">
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <prototypes>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="tools" textLabel="tg4-Ox-UsK" style="IBUITableViewCellStyleDefault" id="tq0-wS-k0Y">
+                                        <rect key="frame" x="0.0" y="55.5" width="375" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="tq0-wS-k0Y" id="cWg-0l-aaE">
+                                            <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tg4-Ox-UsK">
+                                                    <rect key="frame" x="15" y="0.0" width="325" height="43.5"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                    </tableViewCell>
+                                </prototypes>
+                                <sections/>
+                                <connections>
+                                    <outlet property="dataSource" destination="pHU-MU-wJ7" id="h67-6V-Pj1"/>
+                                    <outlet property="delegate" destination="pHU-MU-wJ7" id="Sdo-2a-dad"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <viewLayoutGuide key="safeArea" id="E1B-PW-qvx"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Tools" image="tools" id="fJu-Gg-e2f"/>
+                    <navigationItem key="navigationItem" title="Tools" id="Cr5-do-P06"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="ghc-6V-0Ud" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="657" y="1030"/>
+        </scene>
+        <!--My-->
+        <scene sceneID="Hkt-tV-iQK">
+            <objects>
+                <viewController storyboardIdentifier="MyPanel" title="My" useStoryboardIdentifierAsRestorationIdentifier="YES" id="7ee-Fj-xyv" customClass="MylistViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="ggR-kU-S5e">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <viewLayoutGuide key="safeArea" id="wTp-MQ-ZOg"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="My" id="3ya-sj-Vib"/>
+                    <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="UBA-Cl-Bku" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="657" y="1701"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="apexlogo-2" width="129" height="32"/>
+        <image name="tab_history" width="66" height="66"/>
+        <image name="tab_home" width="66" height="66"/>
+        <image name="tab_login" width="66" height="66"/>
+        <image name="tools" width="32" height="32"/>
+        <image name="unchecked_32" width="16" height="16"/>
+    </resources>
+</document>

+ 13 - 0
Apex Mobile/Apex Mobile/MylistViewController.h

@@ -0,0 +1,13 @@
+//
+//  MylistViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "StaticModelistViewController.h"
+
+@interface MylistViewController : StaticModelistViewController
+
+@end

+ 57 - 0
Apex Mobile/Apex Mobile/MylistViewController.m

@@ -0,0 +1,57 @@
+//
+//  MylistViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "MylistViewController.h"
+
+@interface MylistViewController ()
+
+@end
+
+@implementation MylistViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (void)LoadModelist
+{
+    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:@"my" ofType:@"json" ]];
+    
+    
+    
+    if(json==nil)
+    {
+        self.modelist = nil;
+        
+    }
+    NSError *error=nil;
+    NSDictionary* modelistjson = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] ;
+    self.modelist = modelistjson[@"modelist"];
+    //    self.navigationItem.title = ;
+    
+    self.title = modelistjson[@"title"];
+    self.tabBarItem.image= [UIImage imageNamed:modelistjson[@"icon"]];
+    
+    //    NSAssert(true, ([NSString stringWithFormat:@"%s LoadModelist not impl",object_getClassName([self class])]));
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 13 - 0
Apex Mobile/Apex Mobile/OrderHistoryViewController.h

@@ -0,0 +1,13 @@
+//
+//  OrderHistoryViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface OrderHistoryViewController : UIViewController
+
+@end

+ 37 - 0
Apex Mobile/Apex Mobile/OrderHistoryViewController.m

@@ -0,0 +1,37 @@
+//
+//  OrderHistoryViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "OrderHistoryViewController.h"
+
+@interface OrderHistoryViewController ()
+
+@end
+
+@implementation OrderHistoryViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 24 - 0
Apex Mobile/Apex Mobile/RootViewController.h

@@ -0,0 +1,24 @@
+//
+//  RootViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "LoginViewController.h"
+//#import "ApexMobileSecondViewController.h"
+//#import "ToolsPanelViewController.h"
+#import "HomeViewController.h"
+#import "ToolslistViewController.h"
+#import "SearchlistViewController.h"
+#import "MylistViewController.h"
+#import "OrderHistoryViewController.h"
+
+
+@interface RootViewController : UITabBarController
+
+@property (strong,nonatomic) NSArray* loginbar;
+@property (strong,nonatomic) NSArray* logoutbar;
+@end

+ 79 - 0
Apex Mobile/Apex Mobile/RootViewController.m

@@ -0,0 +1,79 @@
+//
+//  RootViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "RootViewController.h"
+
+@interface RootViewController ()
+
+@end
+
+@implementation RootViewController
+
+- (UITabBarItem *)itemWithSelectedImage:(NSString *)selectImage image:(NSString *)image title:(NSString *)title{
+    UIImage *im = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
+    UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:title image:im selectedImage:im];
+    
+    return item;
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+//    self.navigationItem.navi
+     [self.navigationController setNavigationBarHidden:YES animated:YES];
+    
+//    [UIStoryboard storyboardWithName:@"EnumSelectAndSort" bundle:nil]
+    
+    LoginViewController * loginVC = [ self.storyboard instantiateViewControllerWithIdentifier:@"LoginPanel"];
+    loginVC.loginSuccessful = ^(void)
+    {
+      // 登陆成功后重新刷新tabbar
+        self.viewControllers = self.loginbar;
+    };
+//    loginVC.tabBarItem =  [self itemWithSelectedImage:@"login" image:@"login" title:@"login"];
+//    ToolslistViewController* toolVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ToolsPanel"];
+    
+    
+    ToolslistViewController *toolVC=[[ToolslistViewController alloc] initWithNibName:@"StaticModelistViewController" bundle:nil];
+    
+    HomeViewController* homeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"HomePanel"];
+    
+    
+    SearchlistViewController* searchVC = [[SearchlistViewController alloc] initWithNibName:@"StaticModelistViewController" bundle:nil];
+    //[self.storyboard instantiateViewControllerWithIdentifier:@"SearchPanel"];
+    MylistViewController* myVC = [[MylistViewController alloc] initWithNibName:@"StaticModelistViewController" bundle:nil];
+    //[self.storyboard instantiateViewControllerWithIdentifier:@"MyPanel"];
+    OrderHistoryViewController* historyVC = [self.storyboard instantiateViewControllerWithIdentifier:@"HistoryPanel"];
+//    toolVC.tabBarItem =  [self itemWithSelectedImage:@"tools" image:@"tools" title:@"tools"];
+    // Do any additional setup after loading the view.
+    
+    
+    self.logoutbar = @[loginVC,toolVC];
+    self.loginbar = @[homeVC,historyVC,searchVC,toolVC,myVC];
+    self.viewControllers = self.logoutbar;
+//    self.tabBar.tintColor = [UIColor blueColor];
+//    self.tabBar.barTintColor = [UIColor whiteColor];
+    
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 13 - 0
Apex Mobile/Apex Mobile/SearchlistViewController.h

@@ -0,0 +1,13 @@
+//
+//  SearchlistViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "StaticModelistViewController.h"
+
+@interface SearchlistViewController : StaticModelistViewController
+
+@end

+ 57 - 0
Apex Mobile/Apex Mobile/SearchlistViewController.m

@@ -0,0 +1,57 @@
+//
+//  SearchlistViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "SearchlistViewController.h"
+
+@interface SearchlistViewController ()
+
+@end
+
+@implementation SearchlistViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (void)LoadModelist
+{
+    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:@"search" ofType:@"json" ]];
+    
+    
+    
+    if(json==nil)
+    {
+        self.modelist = nil;
+        
+    }
+    NSError *error=nil;
+    NSDictionary* modelistjson = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] ;
+    self.modelist = modelistjson[@"modelist"];
+    //    self.navigationItem.title = ;
+    
+    self.title = modelistjson[@"title"];
+    self.tabBarItem.image= [UIImage imageNamed:modelistjson[@"icon"]];
+    
+    //    NSAssert(true, ([NSString stringWithFormat:@"%s LoadModelist not impl",object_getClassName([self class])]));
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 13 - 0
Apex Mobile/Apex Mobile/StaticModeTableViewCell.h

@@ -0,0 +1,13 @@
+//
+//  StaticModeTableViewCell.h
+//  Apex Mobile
+//
+//  Created by Ray on 26/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface StaticModeTableViewCell : UITableViewCell
+
+@end

+ 24 - 0
Apex Mobile/Apex Mobile/StaticModeTableViewCell.m

@@ -0,0 +1,24 @@
+//
+//  StaticModeTableViewCell.m
+//  Apex Mobile
+//
+//  Created by Ray on 26/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "StaticModeTableViewCell.h"
+
+@implementation StaticModeTableViewCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 30 - 0
Apex Mobile/Apex Mobile/StaticModeTableViewCell.xib

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="85" id="ngi-f6-G6D">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="85"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="ngi-f6-G6D" id="GRR-hs-IP1">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="84.5"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wRh-aI-Yan">
+                        <rect key="frame" x="16" y="11" width="64" height="64"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    </imageView>
+                </subviews>
+            </tableViewCellContentView>
+            <point key="canvasLocation" x="25.5" y="497.5"/>
+        </tableViewCell>
+    </objects>
+</document>

+ 15 - 0
Apex Mobile/Apex Mobile/StaticModelistViewController.h

@@ -0,0 +1,15 @@
+//
+//  StaticModelistViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface StaticModelistViewController : UIViewController
+@property (weak, nonatomic) IBOutlet UITableView *modeTableView;
+@property (strong,nonatomic) NSArray* modelist;
+- (void)LoadModelist;
+@end

+ 131 - 0
Apex Mobile/Apex Mobile/StaticModelistViewController.m

@@ -0,0 +1,131 @@
+//
+//  StaticModelistViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "StaticModelistViewController.h"
+#import "StaticModeTableViewCell.h"
+
+@interface StaticModelistViewController ()
+
+@end
+
+@implementation StaticModelistViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        [self LoadModelist];
+    }
+    return self;
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (void)LoadModelist
+{
+    
+        NSAssert(true, ([NSString stringWithFormat:@"%s LoadModelist not impl",object_getClassName([self class])]));
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+#pragma mark - TableView Delegate & DataSource
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    
+    return self.modelist.count;
+}
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+//    return 4;
+   //     return self.modelist.count;
+    return 1;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+//    StaticModeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"mode_cell" forIndexPath:indexPath];
+    NSString *CellIdentifier = @"mode_cell";
+    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+    
+    if (cell == nil) {
+        
+        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
+        
+    }
+    NSDictionary* item = self.modelist[indexPath.section];
+    cell.textLabel.text = item[@"name"];
+    cell.detailTextLabel.text = item[@"detail"];
+    cell.detailTextLabel.textColor = [UIColor grayColor];
+    cell.imageView.image = [UIImage imageNamed:item[@"icon"]];
+    //    RAModel *model = self.modelist[indexPath.row];//[self.modeArray objectAtIndex:indexPath.row];
+    
+    //[cell setModeinfo:[self.modelist[indexPath.row] mutableCopy]];
+    //    [cell setModel:model];
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return 60.f;
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return 10;
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+{
+    return 0.1;
+}
+//- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+//{
+//    UIView* v=[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 5)];
+//    v.backgroundColor=[UIColor redColor];
+//    return v;
+//}
+//- (UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+//{
+//    UIView* v=[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 5)];
+//    v.backgroundColor=[UIColor greenColor];
+//    return v;
+//}
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    StaticModeTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
+    //    RAModel *model = cell.model;
+//    NSMutableDictionary* modeinfo= cell.modeinfo;
+//
+//    if ([modeinfo[@"type"] isEqualToString:@"predef_query"]) {
+//        [self processPredefQueryModel:modeinfo];
+//
+//    } else if ([modeinfo[@"type"] isEqualToString:@"query"]) {
+//        [self processQueryModel:modeinfo];
+//
+//    } else if ([modeinfo[@"type"] isEqualToString:@"local_func"]) {
+//        [self processLocalFunModel:modeinfo];
+//
+//    } else if ([modeinfo[@"type"] isEqualToString:@"submode"]) {
+//        [self processSubmodeModel:modeinfo];
+//    }
+    
+}
+
+@end

+ 46 - 0
Apex Mobile/Apex Mobile/StaticModelistViewController.xib

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="StaticModelistViewController">
+            <connections>
+                <outlet property="view" destination="iN0-l3-epB" id="HiP-zr-PvK"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="UNo-Vl-w2c">
+                    <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+                    <connections>
+                        <outlet property="dataSource" destination="-1" id="CYD-0h-b5A"/>
+                        <outlet property="delegate" destination="-1" id="huE-dr-l2Y"/>
+                    </connections>
+                </tableView>
+            </subviews>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="UNo-Vl-w2c" secondAttribute="bottom" id="2pE-c5-uHL"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="top" secondItem="UNo-Vl-w2c" secondAttribute="top" constant="20" id="3Lz-3j-5fO"/>
+                <constraint firstItem="UNo-Vl-w2c" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="NBS-gG-tG8"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="UNo-Vl-w2c" secondAttribute="trailing" id="h3p-Ej-Qi2"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+        </view>
+        <tabBarItem title="Item" image="home" id="rSy-or-zsr"/>
+    </objects>
+    <resources>
+        <image name="home" width="30" height="30"/>
+    </resources>
+</document>

+ 13 - 0
Apex Mobile/Apex Mobile/ToolslistViewController.h

@@ -0,0 +1,13 @@
+//
+//  ToolslistViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "StaticModelistViewController.h"
+
+@interface ToolslistViewController : StaticModelistViewController
+
+@end

+ 87 - 0
Apex Mobile/Apex Mobile/ToolslistViewController.m

@@ -0,0 +1,87 @@
+//
+//  ToolslistViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 25/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ToolslistViewController.h"
+
+@interface ToolslistViewController ()
+
+@end
+
+@implementation ToolslistViewController
+
+//- (id)initFulllistWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+//{
+//    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+//    if (self) {
+//        [self LoadModeFulllist];
+//    }
+//    return self;
+//}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+//- (void)LoadModeFulllist
+//{
+//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:@"tools" ofType:@"json" ]];
+//
+//
+//
+//    if(json==nil)
+//    {
+//        self.modelist = nil;
+//
+//    }
+//    NSError *error=nil;
+//    NSDictionary* modelistjson = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] ;
+//    self.modelist = modelistjson[@"modelist"];
+//    //    self.navigationItem.title = ;
+//
+//    self.title = modelistjson[@"title"];
+//    self.tabBarItem.image= [UIImage imageNamed:modelistjson[@"icon"]];
+//
+//    //    NSAssert(true, ([NSString stringWithFormat:@"%s LoadModelist not impl",object_getClassName([self class])]));
+//}
+- (void)LoadModelist
+{
+    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:@"tools" ofType:@"json" ]];
+    
+ 
+    
+    if(json==nil)
+    {
+        self.modelist = nil;
+        
+    }
+    NSError *error=nil;
+    NSDictionary* modelistjson = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] ;
+    self.modelist = modelistjson[@"modelist"];
+//    self.navigationItem.title = ;
+    
+    self.title = modelistjson[@"title"];
+    self.tabBarItem.image= [UIImage imageNamed:modelistjson[@"icon"]];
+    
+//    NSAssert(true, ([NSString stringWithFormat:@"%s LoadModelist not impl",object_getClassName([self class])]));
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 44 - 0
Apex Mobile/Apex Mobile/my.json

@@ -0,0 +1,44 @@
+{
+    "remark":"my菜单",
+    "modelist": [
+                 {
+                 "name": "Saved Detail",
+                 "detail": "Saved Detail detail",
+                 "icon": "rect_saved_detail",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Saved Search",
+                 "detail": "Saved Search detail",
+                 "icon": "rect_saved_search",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Download documents",
+                 "detail": "Download documents detail",
+                 "icon": "ic_down_doc",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Message",
+                 "detail": "Message detail",
+                 "icon": "ic_message",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Change Password",
+                 "detail": "Container Detail detail",
+                 "icon": "ic_password",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Logout",
+                 "detail": "Document Manage detail",
+                 "icon": "ic_exit",
+                 "type": "market news"
+                 }
+                 ],
+    "title": "My",
+    "icon":"tab_my"
+}
+

+ 3 - 0
Apex Mobile/Apex Mobile/readme.txt

@@ -0,0 +1,3 @@
+tab_icon: 30x30 tabbar 图标
+mode_icon: 48x48 功能菜单图标
+status_icon:48x48 当前状态图标

+ 31 - 0
Apex Mobile/Apex Mobile/search.json

@@ -0,0 +1,31 @@
+{
+    "remark":"search菜单",
+    "modelist": [
+                 {
+                 "name": "Ocean Booking",
+                 "detail": "Ocean Booking detail",
+                 "icon": "mode_booking",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Ocean B/L Info.",
+                 "detail": "Ocean B/L Info. detail",
+                 "icon": "mode_bl",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Container Detail",
+                 "detail": "Container Detail detail",
+                 "icon": "mode_container",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Document",
+                 "detail": "Document detail",
+                 "icon": "mode_document",
+                 "type": "market news"
+                 }
+                 ],
+    "title": "Search",
+    "icon":"tab_search"
+}

+ 37 - 0
Apex Mobile/Apex Mobile/tools.json

@@ -0,0 +1,37 @@
+{
+    "remark":"tool菜单",
+    "modelist": [
+                 {
+                 "name": "Market News",
+                 "detail": "Market news detail",
+                 "icon": "rect_market_news",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Announcements",
+                 "detail": "Announcements detail",
+                 "icon": "rect_announcements",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Apex History",
+                 "detail": "Apex History detail",
+                 "icon": "rect_history",
+                 "type": "market news"
+                 },
+                 {
+                 "name": "Service Location",
+                 "detail": "Service Location detail",
+                 "icon": "ic_service_location",
+                 "type": "service location"
+                 },
+                 {
+                 "name": "About",
+                 "detail": "About detail",
+                 "icon": "rect_about",
+                 "type": "market news"
+                 }
+                 ],
+    "title": "Tools",
+    "icon":"tab_tools"
+}

+ 1 - 1
Apex Mobile/Apex MobileTests/Apex MobileTests-Info.plist

@@ -7,7 +7,7 @@
 	<key>CFBundleExecutable</key>
 	<string>${EXECUTABLE_NAME}</string>
 	<key>CFBundleIdentifier</key>
-	<string>usai.apex.${PRODUCT_NAME:rfc1034identifier}</string>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundlePackageType</key>