HF_Q лет назад: 5
Родитель
Сommit
f7b3e88ac4
31 измененных файлов с 830 добавлено и 6 удалено
  1. 74 0
      smartRhino.xcodeproj/project.pbxproj
  2. BIN
      smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/UserInterfaceState.xcuserstate
  3. BIN
      smartRhino/Assets.xcassets/Common/Common_collect.imageset/Common_collect@2x.png
  4. BIN
      smartRhino/Assets.xcassets/Common/Common_collect.imageset/Common_collect@3x.png
  5. 22 0
      smartRhino/Assets.xcassets/Common/Common_collect.imageset/Contents.json
  6. BIN
      smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Common_gjxiang@2x.png
  7. BIN
      smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Common_gjxiang@3x.png
  8. 22 0
      smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Contents.json
  9. BIN
      smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Common_gztai@2x.png
  10. BIN
      smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Common_gztai@3x.png
  11. 22 0
      smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Contents.json
  12. BIN
      smartRhino/Assets.xcassets/Common/Common_note.imageset/Common_note@2x.png
  13. BIN
      smartRhino/Assets.xcassets/Common/Common_note.imageset/Common_note@3x.png
  14. 22 0
      smartRhino/Assets.xcassets/Common/Common_note.imageset/Contents.json
  15. 6 0
      smartRhino/Assets.xcassets/Common/Contents.json
  16. 4 2
      smartRhino/Project/Base/SubClass/TabBarController/TabBarController.m
  17. 1 0
      smartRhino/Project/Other/Util/StoryboardManager/StoryboardManager.h
  18. 7 0
      smartRhino/Project/Other/Util/StoryboardManager/StoryboardManager.m
  19. 20 4
      smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/View/MyTDGroupView.m
  20. 17 0
      smartRhino/Project/VCModel/common/Controller/CommonHomeVC.h
  21. 276 0
      smartRhino/Project/VCModel/common/Controller/CommonHomeVC.m
  22. 18 0
      smartRhino/Project/VCModel/common/Model/CommonBarModel.h
  23. 13 0
      smartRhino/Project/VCModel/common/Model/CommonBarModel.m
  24. 20 0
      smartRhino/Project/VCModel/common/Model/CommonListModel.h
  25. 13 0
      smartRhino/Project/VCModel/common/Model/CommonListModel.m
  26. 19 0
      smartRhino/Project/VCModel/common/View/CommonBarCell.h
  27. 22 0
      smartRhino/Project/VCModel/common/View/CommonBarCell.m
  28. 51 0
      smartRhino/Project/VCModel/common/View/CommonBarCell.xib
  29. 28 0
      smartRhino/Project/VCModel/common/View/CommonListCell.h
  30. 52 0
      smartRhino/Project/VCModel/common/View/CommonListCell.m
  31. 101 0
      smartRhino/Project/VCModel/common/View/CommonListCell.xib

+ 74 - 0
smartRhino.xcodeproj/project.pbxproj

@@ -1098,6 +1098,14 @@
 		EBCFA0FD23ACF06A00A62645 /* MyTDTopicSelectExtentVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBCFA0FC23ACF06A00A62645 /* MyTDTopicSelectExtentVC.m */; };
 		EBD627D52429DD6500D91C9E /* ChatQrcodeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBD627D42429DD6500D91C9E /* ChatQrcodeVC.m */; };
 		EBDD70BB23B4876F00AC0BF4 /* MyWorkCarVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDD70BA23B4876F00AC0BF4 /* MyWorkCarVC.m */; };
+		EBDE08B02458179B005D426C /* CommonHomeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDE08AF2458179B005D426C /* CommonHomeVC.m */; };
+		EBDE08B42458192C005D426C /* Common.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EBDE08B32458192C005D426C /* Common.storyboard */; };
+		EBDE08BB2458203A005D426C /* CommonBarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDE08B92458203A005D426C /* CommonBarCell.m */; };
+		EBDE08BC2458203A005D426C /* CommonBarCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EBDE08BA2458203A005D426C /* CommonBarCell.xib */; };
+		EBDE08BF24582163005D426C /* CommonBarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDE08BE24582163005D426C /* CommonBarModel.m */; };
+		EBDE08C324582BA6005D426C /* CommonListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDE08C124582BA6005D426C /* CommonListCell.m */; };
+		EBDE08C424582BA6005D426C /* CommonListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EBDE08C224582BA6005D426C /* CommonListCell.xib */; };
+		EBDE08C7245837BF005D426C /* CommonListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDE08C6245837BF005D426C /* CommonListModel.m */; };
 		EBE36C3723A7208E002BE674 /* NewTopicCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EBE36C3523A7208E002BE674 /* NewTopicCell.m */; };
 		EBE36C3823A7208E002BE674 /* NewTopicCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EBE36C3623A7208E002BE674 /* NewTopicCell.xib */; };
 		EBE36C3B23A72AFA002BE674 /* NewTopicModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EBE36C3A23A72AFA002BE674 /* NewTopicModel.m */; };
@@ -3026,6 +3034,19 @@
 		EBD627D42429DD6500D91C9E /* ChatQrcodeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatQrcodeVC.m; sourceTree = "<group>"; };
 		EBDD70B923B4876F00AC0BF4 /* MyWorkCarVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyWorkCarVC.h; sourceTree = "<group>"; };
 		EBDD70BA23B4876F00AC0BF4 /* MyWorkCarVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyWorkCarVC.m; sourceTree = "<group>"; };
+		EBDE08AE2458179B005D426C /* CommonHomeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonHomeVC.h; sourceTree = "<group>"; };
+		EBDE08AF2458179B005D426C /* CommonHomeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommonHomeVC.m; sourceTree = "<group>"; };
+		EBDE08B32458192C005D426C /* Common.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Common.storyboard; sourceTree = "<group>"; };
+		EBDE08B82458203A005D426C /* CommonBarCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonBarCell.h; sourceTree = "<group>"; };
+		EBDE08B92458203A005D426C /* CommonBarCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommonBarCell.m; sourceTree = "<group>"; };
+		EBDE08BA2458203A005D426C /* CommonBarCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonBarCell.xib; sourceTree = "<group>"; };
+		EBDE08BD24582163005D426C /* CommonBarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonBarModel.h; sourceTree = "<group>"; };
+		EBDE08BE24582163005D426C /* CommonBarModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommonBarModel.m; sourceTree = "<group>"; };
+		EBDE08C024582BA6005D426C /* CommonListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonListCell.h; sourceTree = "<group>"; };
+		EBDE08C124582BA6005D426C /* CommonListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommonListCell.m; sourceTree = "<group>"; };
+		EBDE08C224582BA6005D426C /* CommonListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonListCell.xib; sourceTree = "<group>"; };
+		EBDE08C5245837BF005D426C /* CommonListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonListModel.h; sourceTree = "<group>"; };
+		EBDE08C6245837BF005D426C /* CommonListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommonListModel.m; sourceTree = "<group>"; };
 		EBE36C3423A7208E002BE674 /* NewTopicCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewTopicCell.h; sourceTree = "<group>"; };
 		EBE36C3523A7208E002BE674 /* NewTopicCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewTopicCell.m; sourceTree = "<group>"; };
 		EBE36C3623A7208E002BE674 /* NewTopicCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NewTopicCell.xib; sourceTree = "<group>"; };
@@ -6572,6 +6593,7 @@
 		C7F61623238C046B008AF22D /* VCModel */ = {
 			isa = PBXGroup;
 			children = (
+				EBDE08AD24581782005D426C /* common */,
 				C622157E23719C84006F5D7F /* Login */,
 				C7D6BBB9235DA1CD00770E7C /* WorkFlow */,
 				C6226FDA236C08E500E2E3BF /* My_Center */,
@@ -7405,6 +7427,50 @@
 			path = categories;
 			sourceTree = "<group>";
 		};
+		EBDE08AD24581782005D426C /* common */ = {
+			isa = PBXGroup;
+			children = (
+				EBDE08B724581FF4005D426C /* Controller */,
+				EBDE08B624581FEA005D426C /* Model */,
+				EBDE08B524581FDB005D426C /* View */,
+				EBDE08B32458192C005D426C /* Common.storyboard */,
+			);
+			path = common;
+			sourceTree = "<group>";
+		};
+		EBDE08B524581FDB005D426C /* View */ = {
+			isa = PBXGroup;
+			children = (
+				EBDE08B82458203A005D426C /* CommonBarCell.h */,
+				EBDE08B92458203A005D426C /* CommonBarCell.m */,
+				EBDE08BA2458203A005D426C /* CommonBarCell.xib */,
+				EBDE08C024582BA6005D426C /* CommonListCell.h */,
+				EBDE08C124582BA6005D426C /* CommonListCell.m */,
+				EBDE08C224582BA6005D426C /* CommonListCell.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		EBDE08B624581FEA005D426C /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				EBDE08BD24582163005D426C /* CommonBarModel.h */,
+				EBDE08BE24582163005D426C /* CommonBarModel.m */,
+				EBDE08C5245837BF005D426C /* CommonListModel.h */,
+				EBDE08C6245837BF005D426C /* CommonListModel.m */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		EBDE08B724581FF4005D426C /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				EBDE08AE2458179B005D426C /* CommonHomeVC.h */,
+				EBDE08AF2458179B005D426C /* CommonHomeVC.m */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -7565,6 +7631,7 @@
 				EB3EAFE223A22EBF00C38AB4 /* TDGroup.storyboard in Resources */,
 				EB8E2CDB239666A900CDFBDA /* close_gray@3x.png in Resources */,
 				324F176B239B3B4D0025CAE7 /* NoticeSelectCell.xib in Resources */,
+				EBDE08C424582BA6005D426C /* CommonListCell.xib in Resources */,
 				C7D6BC90235DA1CE00770E7C /* MyClubApplicationTableViewCell.xib in Resources */,
 				EB8E2D47239666A900CDFBDA /* icon_019.gif in Resources */,
 				C622708C236C09FC00E2E3BF /* mj_house@3x.png in Resources */,
@@ -7650,6 +7717,7 @@
 				EB8E2D9D239666A900CDFBDA /* msg_file_white@3x.png in Resources */,
 				C788F1892369451A0070A6B3 /* FavoritesViewController.xib in Resources */,
 				C78373FC23AA287C0096AFE2 /* FecordJoinWorkFlowListController.xib in Resources */,
+				EBDE08B42458192C005D426C /* Common.storyboard in Resources */,
 				EB8E2D89239666A900CDFBDA /* msg_recv_audio02@3x.png in Resources */,
 				C7E03AD623CD89EA00A97589 /* InputGongwenFileCell.xib in Resources */,
 				EB8E2DA2239666A900CDFBDA /* chat_info@2x.png in Resources */,
@@ -7658,6 +7726,7 @@
 				EB8E2D61239666A900CDFBDA /* chatbar_face@3x.png in Resources */,
 				327E376623A9D9C900842F47 /* CreateNoteBookCell.xib in Resources */,
 				EB8E2D48239666A900CDFBDA /* icon_027.gif in Resources */,
+				EBDE08BC2458203A005D426C /* CommonBarCell.xib in Resources */,
 				EB8E2D8C239666A900CDFBDA /* msg_fail@3x.png in Resources */,
 				C625AA60236D98CE0010E967 /* ChatMsg.storyboard in Resources */,
 				C62215962372C0CC006F5D7F /* MailList.storyboard in Resources */,
@@ -7945,6 +8014,7 @@
 				32C384C223B0E24B00BBC733 /* NoteBookShareVC.m in Sources */,
 				C69A8DEB23743AC80098FA26 /* ChatMsgDetailChatInfoVC.m in Sources */,
 				C75ACEE3236AAE9300CB6374 /* MyTDGroupView.m in Sources */,
+				EBDE08C324582BA6005D426C /* CommonListCell.m in Sources */,
 				EB0BBB7C23D2978F005C850C /* ChatMsgNoticeSearchVC.m in Sources */,
 				C625AA91236FCDEE0010E967 /* ChatMsgSearchResultVC.m in Sources */,
 				C69A8DE02374050D0098FA26 /* ChatMsgDetailChatVC.m in Sources */,
@@ -8055,6 +8125,7 @@
 				C625AA6A236D9D990010E967 /* ChatMsgListCell.m in Sources */,
 				C703800B23700CA7008EA3E4 /* MyApprovalPageDetail.m in Sources */,
 				C7AB8448235EFC6700F2363F /* UILabel+TD.m in Sources */,
+				EBDE08C7245837BF005D426C /* CommonListModel.m in Sources */,
 				324D963123A3887100C7D9E8 /* MyFavoriteModel.m in Sources */,
 				C7799F1B23AB991100270988 /* WorkFlowPersonnelListHeadView.m in Sources */,
 				C75ACEE0236AAE8A00CB6374 /* MyTDGroupCell.m in Sources */,
@@ -8297,6 +8368,7 @@
 				C7235186238244B20037E4F6 /* ArticleBlocks.m in Sources */,
 				EB09BF2D23B1A32B001CCBC7 /* WaitWorkLabelModel.m in Sources */,
 				C7D6BC92235DA1CE00770E7C /* ClubApplicationViewController.m in Sources */,
+				EBDE08BB2458203A005D426C /* CommonBarCell.m in Sources */,
 				C751012C2383A02F00E4429B /* FormFields.m in Sources */,
 				C59D0C0923825DE1007D0760 /* UIImageView+YYWebImage.m in Sources */,
 				C625AA82236FBF670010E967 /* YCMenuView.m in Sources */,
@@ -8390,6 +8462,7 @@
 				EBC64DD123C6B78D00558368 /* SelectSaveVC.m in Sources */,
 				3264782623BF0B9600E0DC2D /* ArtticleComentCell.m in Sources */,
 				EB0F64D923AA529400AD56A0 /* TopicListSubModel.m in Sources */,
+				EBDE08B02458179B005D426C /* CommonHomeVC.m in Sources */,
 				C59D0C3623825DE1007D0760 /* NSData+YYAdd.m in Sources */,
 				C7743F9D23A8B2D800973D70 /* WorkFlowHomeCell.m in Sources */,
 				EBF2D55423C2E8A000EC35C4 /* MHComment.m in Sources */,
@@ -8454,6 +8527,7 @@
 				C72F3901236DADDC00933828 /* SettingVC.m in Sources */,
 				EB440FD423A36D4C006BCB95 /* TDGroupInfoChangeVc.m in Sources */,
 				EB8E2D20239666A900CDFBDA /* EMSearchViewController.m in Sources */,
+				EBDE08BF24582163005D426C /* CommonBarModel.m in Sources */,
 				C59D0C0A23825DE1007D0760 /* MKAnnotationView+YYWebImage.m in Sources */,
 				C752D20E2375118700913F97 /* AgreeApprovalViewController.m in Sources */,
 				C74BCC6F238F611700169982 /* AddChannelController.m in Sources */,

BIN
smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/UserInterfaceState.xcuserstate


BIN
smartRhino/Assets.xcassets/Common/Common_collect.imageset/Common_collect@2x.png


BIN
smartRhino/Assets.xcassets/Common/Common_collect.imageset/Common_collect@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/Common/Common_collect.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Common_gjxiang@2x.png


BIN
smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Common_gjxiang@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/Common/Common_gjxiang.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Common_gztai@2x.png


BIN
smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Common_gztai@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/Common/Common_gztai.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/Common/Common_note.imageset/Common_note@2x.png


BIN
smartRhino/Assets.xcassets/Common/Common_note.imageset/Common_note@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/Common/Common_note.imageset/Contents.json

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

+ 6 - 0
smartRhino/Assets.xcassets/Common/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 4 - 2
smartRhino/Project/Base/SubClass/TabBarController/TabBarController.m

@@ -14,7 +14,8 @@
 #import "AppDelegate.h"
 #import "My_CenterVC.h"
 #import "ChatMsgListVC.h"
-#import "HomeTestViewController.h"
+#import "CommonHomeVC.h"
+
 @interface TabBarController ()<UITabBarControllerDelegate>
 @property (nonatomic, strong) UIView    * dotImage;
 @end
@@ -83,8 +84,9 @@ TDShareInstance_implementation(TabBarController)
 - (void)addchlidVcs {
 //    [self addChildVC:[self className:@"HomeTestViewController"] title:@"首页" normalImageName:@"bar_home_off" selectedImageName:@"bar_home_on" isRequiredNavController:true];
     [self addChildVC:[self className:@"HomeViewController"] title:@"首页" normalImageName:@"bar_home_off" selectedImageName:@"bar_home_on" isRequiredNavController:true];
-    [self addChildVC:[self className:@"WorkFlowController"] title:@"工作" normalImageName:@"bar_work_off" selectedImageName:@"bar_work_on" isRequiredNavController:true];
+//    [self addChildVC:[self className:@"WorkFlowController"] title:@"工作" normalImageName:@"bar_work_off" selectedImageName:@"bar_work_on" isRequiredNavController:true];
 //    [self addChildVC:[self className:@"ChatMessageController"] title:@"信源" normalImageName:@"bar_chat_off" selectedImageName:@"bar_chat_on" isRequiredNavController:true];
+    [self addChildVC:[StoryboardManager shared].Common.instantiateInitialViewController title:@"常用" normalImageName:@"bar_work_off" selectedImageName:@"bar_work_on" isRequiredNavController:false];
     [self addChildVC:[StoryboardManager shared].chatMsg.instantiateInitialViewController title:@"信源" normalImageName:@"bar_chat_off" selectedImageName:@"bar_chat_on" isRequiredNavController:false];
     [self addChildVC:[StoryboardManager shared].myCenter.instantiateInitialViewController title:@"我的" normalImageName:@"bar_my_off" selectedImageName:@"bar_my_on" isRequiredNavController:false];
 }

+ 1 - 0
smartRhino/Project/Other/Util/StoryboardManager/StoryboardManager.h

@@ -33,6 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic,readonly) UIStoryboard *myTDTopic;
 @property (weak, nonatomic,readonly) UIStoryboard *myTDTopicExtent;
 @property (weak, nonatomic,readonly) UIStoryboard *Search;
+@property (weak, nonatomic,readonly) UIStoryboard *Common;
 
 @end
 

+ 7 - 0
smartRhino/Project/Other/Util/StoryboardManager/StoryboardManager.m

@@ -31,6 +31,7 @@
 @property (weak, nonatomic) UIStoryboard *myTDTopic;
 @property (weak, nonatomic) UIStoryboard *myTDTopicExtent;
 @property (weak, nonatomic) UIStoryboard *Search;
+@property (weak, nonatomic) UIStoryboard *Common;
 @end
 
 @implementation StoryboardManager
@@ -170,4 +171,10 @@
     }
      return  _Search = [UIStoryboard storyboardWithName:@"Search" bundle:nil];
 }
+- (UIStoryboard *)Common {
+    if (_Common) {
+        return _Common;
+    }
+    return _Common = [UIStoryboard storyboardWithName:@"Common" bundle:nil];
+}
 @end

+ 20 - 4
smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/View/MyTDGroupView.m

@@ -20,6 +20,26 @@
         self.backgroundColor = [UIColor whiteColor];
         [self addSubview:self.button];
         self.button.frame = CGRectMake(15,10,kGXScreenWidth - 30,30);
+        [self.button setBackgroundColor:UIColorHex(F5F6F8)];
+        [self.button setTitleColor:UIColorHex(ABACAE) forState:UIControlStateNormal];
+        self.button.layer.cornerRadius = 15;
+        self.button.layer.masksToBounds = YES;
+    }
+    return self;
+}
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        self.backgroundColor = [UIColor whiteColor];
+        [self addSubview:self.button];
+        self.button.frame = CGRectMake(15,4,frame.size.width - 30,frame.size.height);
+        [self.button setBackgroundColor:UIColorHex(0xffffff)];
+        [self.button setTitleColor:UIColorHex(0x999999) forState:UIControlStateNormal];
+        self.button.layer.borderWidth = 0.5f;
+        self.button.layer.borderColor = UIColorHex(0xEEEEEE).CGColor;
+        self.button.layer.cornerRadius = frame.size.height * 0.5;
+        self.button.layer.masksToBounds = YES;
     }
     return self;
 }
@@ -27,12 +47,8 @@
     if (!_button) {
         _button = [[TDButton alloc] init];
         [_button setTitle:@" 搜索" forState:UIControlStateNormal];
-        [_button setBackgroundColor:UIColorHex(F5F6F8)];
-        [_button setTitleColor:UIColorHex(ABACAE) forState:UIControlStateNormal];
         [[_button titleLabel] setFont:[UIFont fontWithName:@"PingFang-SC-Regular" size:13.f]];
         [_button setImage:IMG(@"sousuo") forState:UIControlStateNormal];
-        _button.layer.cornerRadius = 15;
-        _button.layer.masksToBounds = YES;
     }
     return _button;
 }

+ 17 - 0
smartRhino/Project/VCModel/common/Controller/CommonHomeVC.h

@@ -0,0 +1,17 @@
+//
+//  CommonHomeVC.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CommonHomeVC : BaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 276 - 0
smartRhino/Project/VCModel/common/Controller/CommonHomeVC.m

@@ -0,0 +1,276 @@
+//
+//  CommonHomeVC.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "CommonHomeVC.h"
+#import "CommonListCell.h"
+#import "MyTDGroupView.h"
+#import "GHRefreshCollectionView.h"
+#import "CommonBarCell.h"
+#import "CommonBarModel.h"
+
+@interface CommonHomeVC ()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource>
+@property (weak, nonatomic) IBOutlet UIView             *NavBar;
+@property (strong, nonatomic)  UITableView              *tableView;
+@property (strong, nonatomic) MyTDGroupView             *SearchView;
+@property (strong, nonatomic) GHRefreshCollectionView   *collectionView;
+@property (strong, nonatomic) NSMutableArray            *collectionDataSource;
+@property (strong, nonatomic) NSMutableArray            *dataArray;
+
+@end
+
+@implementation CommonHomeVC
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.fd_prefersNavigationBarHidden = YES;
+    self.view.backgroundColor = RGB(240, 239, 244);
+
+    if (@available(iOS 11.0, *)) {
+        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+    } else {
+        self.automaticallyAdjustsScrollViewInsets = NO;
+    }
+
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.NavBar.mas_bottom);
+        if (@available(iOS 11.0, *)) {
+            make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);
+        } else {
+            make.bottom.equalTo(self.view.mas_bottom);
+        }
+    }];
+    
+    [self setBarData];
+    [self.SearchView.button setAction:^{
+        NSLog(@"点击搜索");
+    }];
+    self.tableView.delegate = self;
+    self.tableView.dataSource = self;
+    self.tableView.backgroundColor = [UIColor clearColor];
+    CommonListModel * model = [[CommonListModel alloc] init];
+    model.Title = @"钱颖一:人工智能将使中国教育仅存的优 势荡然无存";
+    model.Name = @"钱颖一";
+    model.Des = @"中国前沿计算机教育观察周刊";
+    [self.dataArray addObject:model];
+    CommonListModel * amodel = [[CommonListModel alloc] init];
+    amodel.Title = @"大脑不擅长思考,那我们应该怎么学习?";
+    amodel.Name = @"周明鑫";
+    amodel.Des = @"北国教育论坛";
+    [self.dataArray addObject:amodel];
+    [self.tableView reloadData];
+}
+- (BOOL)hidesBottomBarWhenPushed{
+    return NO;
+}
+#pragma mark - UITableViewDelegate
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 3;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
+    switch (section) {
+        case 0:{
+            return 0;
+        }break;
+        case 1:{
+            return 1;
+        }break;
+        default:{
+            return self.dataArray.count;
+        }break;
+    }
+}
+
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    switch (indexPath.section) {
+        case 0:{
+            return 0.f;
+        }break;
+        case 1:{
+            return 72.f;
+        }break;
+        default:{
+            return UITableViewAutomaticDimension;
+        }break;
+    }
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    switch (section) {
+        case 0:{
+            return 40.f;
+        }break;
+        case 1:{
+            return 0.f;
+        }break;
+        default:{
+            return 36.f;
+        }break;
+    }
+}
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    switch (section) {
+        case 0:{
+            return self.SearchView;
+        }break;
+        case 1:{
+            UIView * view = [UIView new];
+            return view;
+        }break;
+        default:{
+            UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 36)];
+            view.backgroundColor = UIColorHex(0xF5F5F5);
+            UILabel * label = [UILabel new];
+            label.font = [UIFont systemFontOfSize:13];
+            label.textColor = UIColorHex(0x666666);
+            label.text = @"最新收藏";
+            [view addSubview:label];
+            [label mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.left.mas_offset(15);
+                make.centerY.mas_equalTo(view);
+            }];
+            return view;
+        }break;
+    }
+}
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    switch (indexPath.section) {
+        case 1:
+        {
+            CommonListCell *cell = [CommonListCell configCell0:tableView indexPath:indexPath];
+            [cell addSubview:self.collectionView];
+            [self.collectionView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, 72)];
+            [self.collectionView reloadData];
+            return cell;
+        }
+            break;
+        default:
+        {
+            CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
+            CommonListModel * model = [self.dataArray objectAtIndex:indexPath.row];
+            [cell setCell1Data:model];
+            return cell;
+        }
+            break;
+    }
+}
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
+    [tableView deselectRowAtIndexPath:indexPath animated:YES];
+}
+#pragma mark - load
+- (UITableView *)tableView
+{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+    }
+    return _tableView;
+}
+- (MyTDGroupView *)SearchView
+{
+    if (!_SearchView) {
+        _SearchView = [[MyTDGroupView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 36)];
+    }
+    return _SearchView;
+}
+-(NSMutableArray *)dataArray{
+    if(!_dataArray){
+        _dataArray = [[NSMutableArray alloc] init];
+    }
+    return _dataArray;
+}
+-(NSMutableArray *)collectionDataSource{
+    if(!_collectionDataSource){
+        _collectionDataSource = [[NSMutableArray alloc] init];
+    }
+    return _collectionDataSource;
+}
+- (GHRefreshCollectionView *)collectionView {
+    if (!_collectionView) {
+        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        CGFloat width = SCREEN_WIDTH * 0.25;
+        CGFloat height = 72;
+        layout.itemSize = CGSizeMake(width, height);
+        layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
+        _collectionView = [[GHRefreshCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
+        _collectionView.delegate = self;
+        _collectionView.dataSource = self;
+        _collectionView.showsHorizontalScrollIndicator = NO;
+        [_collectionView registerNib:[UINib nibWithNibName:@"CommonBarCell" bundle:nil] forCellWithReuseIdentifier:@"CommonBarCell"];
+        _collectionView.backgroundColor = [UIColor whiteColor];
+    }
+    return _collectionView;
+}
+#pragma mark UICollectionView
+- (NSInteger)numberOfSectionsInCollectionView:(GHRefreshCollectionView *)collectionView{
+    return 1;
+}
+
+/**********************************************************************/
+#pragma mark -UICollectionViewDataSource
+/**********************************************************************/
+- (NSInteger)collectionView:(GHRefreshCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
+    return self.collectionDataSource.count;
+}
+
+- (UICollectionViewCell *)collectionView:(GHRefreshCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
+{
+    CommonBarModel *model = [self.collectionDataSource objectAtIndex:indexPath.item];
+    CommonBarCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CommonBarCell" forIndexPath:indexPath];
+    [cell setDataWithModel:model];
+    return cell;
+}
+
+/****************************************************/
+#pragma mark --UICollectionViewDelegateFlowLayout
+/****************************************************/
+- (CGSize)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
+{
+    CGFloat width = SCREEN_WIDTH * 0.25;
+    CGFloat height = 72;
+    return CGSizeMake(width, height);
+}
+
+-(UIEdgeInsets)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
+{
+    return UIEdgeInsetsMake(0,0,0,0);
+}
+
+- (CGFloat)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
+    return 0;
+}
+
+- (CGFloat)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
+    return 0;
+}
+
+
+- (void)collectionView:(GHRefreshCollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
+    [collectionView deselectItemAtIndexPath:indexPath animated:YES];
+    
+}
+- (void)setBarData
+{
+    [self.collectionDataSource removeAllObjects];
+    NSArray * titleArray = @[@"收藏",@"笔记",@"工具箱",@"工作台"];
+    NSArray * imageArray = @[@"Common_collect",@"Common_note",@"Common_gjxiang",@"Common_gztai"];
+    for (NSInteger i = 0; i < titleArray.count; i ++) {
+        CommonBarModel * model = [[CommonBarModel alloc] init];
+        model.name = titleArray[i];
+        model.imageStr = imageArray[i];
+        [self.collectionDataSource addObject:model];
+    }
+}
+
+@end

+ 18 - 0
smartRhino/Project/VCModel/common/Model/CommonBarModel.h

@@ -0,0 +1,18 @@
+//
+//  CommonBarModel.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BaseModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CommonBarModel : BaseModel
+@property (nonatomic, copy) NSString   * name;
+@property (nonatomic, copy) NSString   * imageStr;
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
smartRhino/Project/VCModel/common/Model/CommonBarModel.m

@@ -0,0 +1,13 @@
+//
+//  CommonBarModel.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "CommonBarModel.h"
+
+@implementation CommonBarModel
+
+@end

+ 20 - 0
smartRhino/Project/VCModel/common/Model/CommonListModel.h

@@ -0,0 +1,20 @@
+//
+//  CommonListModel.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BaseModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CommonListModel : BaseModel
+@property (nonatomic, copy) NSString   * Title;
+@property (nonatomic, copy) NSString   * Name;
+@property (nonatomic, copy) NSString   * Des;
+@property (nonatomic, copy) NSString   * AvatarUrl;
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
smartRhino/Project/VCModel/common/Model/CommonListModel.m

@@ -0,0 +1,13 @@
+//
+//  CommonListModel.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "CommonListModel.h"
+
+@implementation CommonListModel
+
+@end

+ 19 - 0
smartRhino/Project/VCModel/common/View/CommonBarCell.h

@@ -0,0 +1,19 @@
+//
+//  CommonBarCell.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "CommonBarModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CommonBarCell : UICollectionViewCell
+@property (weak, nonatomic) IBOutlet UIImageView *imagV;
+@property (weak, nonatomic) IBOutlet UILabel *nameL;
+- (void)setDataWithModel:(CommonBarModel *)model;
+@end
+
+NS_ASSUME_NONNULL_END

+ 22 - 0
smartRhino/Project/VCModel/common/View/CommonBarCell.m

@@ -0,0 +1,22 @@
+//
+//  CommonBarCell.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "CommonBarCell.h"
+
+@implementation CommonBarCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+- (void)setDataWithModel:(CommonBarModel *)model
+{
+    self.nameL.text = model.name;
+    self.imagV.image = IMG(model.imageStr);
+}
+@end

+ 51 - 0
smartRhino/Project/VCModel/common/View/CommonBarCell.xib

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
+        <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"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="CommonBarCell">
+            <rect key="frame" x="0.0" y="0.0" width="73" height="72"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="73" height="72"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mWd-O0-edz">
+                        <rect key="frame" x="36.5" y="47" width="0.0" height="0.0"/>
+                        <fontDescription key="fontDescription" name="PingFangSC-Regular" family="PingFang SC" pointSize="13"/>
+                        <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ZNi-sH-3Yz">
+                        <rect key="frame" x="24" y="13" width="25" height="25"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="25" id="fkW-NY-u0h"/>
+                            <constraint firstAttribute="width" constant="25" id="jlq-Pc-ocr"/>
+                        </constraints>
+                    </imageView>
+                </subviews>
+            </view>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="mWd-O0-edz" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="EU0-oH-cH4"/>
+                <constraint firstItem="ZNi-sH-3Yz" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="13" id="ZNu-Ma-7yD"/>
+                <constraint firstItem="mWd-O0-edz" firstAttribute="top" secondItem="ZNi-sH-3Yz" secondAttribute="bottom" constant="9" id="kMU-MV-ZhU"/>
+                <constraint firstItem="ZNi-sH-3Yz" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="ovh-Kq-OZ1"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
+            <size key="customSize" width="73" height="72"/>
+            <connections>
+                <outlet property="imagV" destination="ZNi-sH-3Yz" id="GYD-xl-GPe"/>
+                <outlet property="nameL" destination="mWd-O0-edz" id="qCt-w2-785"/>
+            </connections>
+            <point key="canvasLocation" x="154.34782608695653" y="152.67857142857142"/>
+        </collectionViewCell>
+    </objects>
+</document>

+ 28 - 0
smartRhino/Project/VCModel/common/View/CommonListCell.h

@@ -0,0 +1,28 @@
+//
+//  CommonListCell.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "CommonListModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CommonListCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UILabel *titleL;
+@property (weak, nonatomic) IBOutlet UIImageView *iconV;
+@property (weak, nonatomic) IBOutlet UILabel *nameL;
+@property (weak, nonatomic) IBOutlet UILabel *desL;
+
+
++ (CGFloat)configCell0Height;
+
++ (CommonListCell *)configCell0:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
++ (CommonListCell *)configCell1:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
+
+- (void)setCell1Data:(CommonListModel *)model;
+@end
+
+NS_ASSUME_NONNULL_END

+ 52 - 0
smartRhino/Project/VCModel/common/View/CommonListCell.m

@@ -0,0 +1,52 @@
+//
+//  CommonListCell.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/4/28.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "CommonListCell.h"
+
+@implementation CommonListCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
++ (CGFloat)configCell0Height{
+    return 72;
+}
+
+
++ (CommonListCell *)configCell0:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath{
+    static NSString *cellIdentifer = @"CommonListCell0";
+    CommonListCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer];
+    if (cell == nil) {
+        cell = [[[NSBundle mainBundle] loadNibNamed:@"CommonListCell" owner:nil options:nil] objectAtIndex:0];
+    }
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    return cell;
+}
++ (CommonListCell *)configCell1:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath{
+    static NSString *cellIdentifer = @"CommonListCell1";
+    CommonListCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer];
+    if (cell == nil) {
+        cell = [[[NSBundle mainBundle] loadNibNamed:@"CommonListCell" owner:nil options:nil] objectAtIndex:1];
+    }
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    return cell;
+}
+- (void)setCell1Data:(CommonListModel *)model
+{
+    self.titleL.text = model.Title;
+    self.nameL.text = model.Name;
+    self.desL.text = model.Des;
+}
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 101 - 0
smartRhino/Project/VCModel/common/View/CommonListCell.xib

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
+        <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"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonListCell0" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell0" id="KGk-i7-Jjw" customClass="CommonListCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="72"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="72"/>
+                <autoresizingMask key="autoresizingMask"/>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <point key="canvasLocation" x="139" y="153"/>
+        </tableViewCell>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell1" rowHeight="410" id="mKl-Yw-yJJ" customClass="CommonListCell">
+            <rect key="frame" x="0.0" y="0.0" width="338" height="111"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mKl-Yw-yJJ" id="8Mf-6v-eUM">
+                <rect key="frame" x="0.0" y="0.0" width="338" height="111"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="文件夹类型" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7id-tv-Nnd">
+                        <rect key="frame" x="68" y="10" width="255" height="42.5"/>
+                        <constraints>
+                            <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="Gea-xa-rYg"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_placeHolderHorizon" translatesAutoresizingMaskIntoConstraints="NO" id="cCf-ee-0J6">
+                        <rect key="frame" x="15" y="24.5" width="40" height="40"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="40" id="RiD-jb-W1S"/>
+                            <constraint firstAttribute="height" constant="40" id="nyC-oA-kE5"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="3"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                        </userDefinedRuntimeAttributes>
+                    </imageView>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3d7-xH-uiA">
+                        <rect key="frame" x="0.0" y="110.5" width="338" height="0.5"/>
+                        <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="0.5" id="RZC-vB-DvE"/>
+                        </constraints>
+                    </view>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="公开" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="84L-UB-7zZ">
+                        <rect key="frame" x="68" y="60.5" width="25" height="14.5"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="公开" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wln-0c-dGh">
+                        <rect key="frame" x="15" y="90" width="25" height="14.5"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="trailing" secondItem="3d7-xH-uiA" secondAttribute="trailing" id="3hQ-AG-mYt"/>
+                    <constraint firstItem="wln-0c-dGh" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" constant="15" id="69r-Pz-6ss"/>
+                    <constraint firstItem="7id-tv-Nnd" firstAttribute="leading" secondItem="cCf-ee-0J6" secondAttribute="trailing" constant="13" id="9Xy-Dc-JrN"/>
+                    <constraint firstItem="3d7-xH-uiA" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" id="B83-7R-eRX"/>
+                    <constraint firstItem="3d7-xH-uiA" firstAttribute="top" secondItem="wln-0c-dGh" secondAttribute="bottom" constant="6" id="DPq-4a-bXp"/>
+                    <constraint firstAttribute="trailing" secondItem="7id-tv-Nnd" secondAttribute="trailing" constant="15" id="K1n-H6-TeF"/>
+                    <constraint firstItem="wln-0c-dGh" firstAttribute="top" secondItem="84L-UB-7zZ" secondAttribute="bottom" constant="15" id="bNR-qP-d5g"/>
+                    <constraint firstItem="cCf-ee-0J6" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" constant="15" id="dVe-Nj-QOF"/>
+                    <constraint firstItem="84L-UB-7zZ" firstAttribute="leading" secondItem="7id-tv-Nnd" secondAttribute="leading" id="daM-2t-Cwl"/>
+                    <constraint firstItem="7id-tv-Nnd" firstAttribute="top" secondItem="8Mf-6v-eUM" secondAttribute="top" constant="10" id="nin-UW-Lrc"/>
+                    <constraint firstAttribute="bottom" secondItem="3d7-xH-uiA" secondAttribute="bottom" id="r09-ZB-T6w"/>
+                    <constraint firstItem="cCf-ee-0J6" firstAttribute="centerY" secondItem="8Mf-6v-eUM" secondAttribute="centerY" constant="-11" id="uaJ-Uh-xUy"/>
+                    <constraint firstItem="84L-UB-7zZ" firstAttribute="top" secondItem="7id-tv-Nnd" secondAttribute="bottom" constant="8" id="zJM-BC-iaP"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="ust-O5-9qD"/>
+            <connections>
+                <outlet property="desL" destination="wln-0c-dGh" id="zVq-KH-QLW"/>
+                <outlet property="iconV" destination="cCf-ee-0J6" id="oty-YI-zBu"/>
+                <outlet property="nameL" destination="84L-UB-7zZ" id="Hy8-Pa-Bvn"/>
+                <outlet property="titleL" destination="7id-tv-Nnd" id="zn3-Jw-E2C"/>
+            </connections>
+            <point key="canvasLocation" x="150.72463768115944" y="356.58482142857139"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="img_placeHolderHorizon" width="345" height="170"/>
+    </resources>
+</document>