Browse Source

曲库首页

Steven 4 years ago
parent
commit
a404afce46
21 changed files with 642 additions and 16 deletions
  1. 68 0
      MusicGradeExam/MusicGradeExam.xcodeproj/project.pbxproj
  2. 6 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/Contents.json
  3. 22 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/Contents.json
  4. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/tips_cancle@2x.png
  5. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/tips_cancle@3x.png
  6. 22 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/Contents.json
  7. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/tips_icon@2x.png
  8. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/tips_icon@3x.png
  9. 0 13
      MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m
  10. 17 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.h
  11. 123 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.m
  12. 21 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.h
  13. 44 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.m
  14. 92 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.xib
  15. 19 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.h
  16. 27 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.m
  17. 48 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.xib
  18. 24 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.h
  19. 45 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.m
  20. 61 0
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.xib
  21. 3 3
      MusicGradeExam/MusicGradeExam/UI/Home/Controller/HomeViewController.m

+ 68 - 0
MusicGradeExam/MusicGradeExam.xcodeproj/project.pbxproj

@@ -10,6 +10,13 @@
 		2729F7C724C6C87400E1F3C4 /* OpenFileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7C624C6C87400E1F3C4 /* OpenFileViewController.m */; };
 		2729F7CA24C6EB4A00E1F3C4 /* SubjectNameModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7C924C6EB4A00E1F3C4 /* SubjectNameModel.m */; };
 		2729F7CD24C6F3F300E1F3C4 /* SongListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7CC24C6F3F300E1F3C4 /* SongListModel.m */; };
+		2729F7D124C8174A00E1F3C4 /* FileNameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7D024C8174A00E1F3C4 /* FileNameView.m */; };
+		2729F7D324C8175E00E1F3C4 /* FileNameView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2729F7D224C8175E00E1F3C4 /* FileNameView.xib */; };
+		2729F7DA24C81E9B00E1F3C4 /* ExamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7D924C81E9B00E1F3C4 /* ExamViewController.m */; };
+		2729F7DD24C81FA200E1F3C4 /* LibraryTipsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7DC24C81FA200E1F3C4 /* LibraryTipsView.m */; };
+		2729F7DF24C81FB000E1F3C4 /* LibraryTipsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2729F7DE24C81FB000E1F3C4 /* LibraryTipsView.xib */; };
+		2729F7E324C8244100E1F3C4 /* ExamListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2729F7E124C8244100E1F3C4 /* ExamListCell.m */; };
+		2729F7E424C8244100E1F3C4 /* ExamListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2729F7E224C8244100E1F3C4 /* ExamListCell.xib */; };
 		27476F4824BBFB5900181362 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 27476F4724BBFB5900181362 /* AppDelegate.m */; };
 		27476F4E24BBFB5900181362 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27476F4D24BBFB5900181362 /* ViewController.m */; };
 		27476F5124BBFB5900181362 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 27476F4F24BBFB5900181362 /* Main.storyboard */; };
@@ -374,6 +381,17 @@
 		2729F7CB24C6F3F300E1F3C4 /* SongListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SongListModel.h; sourceTree = "<group>"; };
 		2729F7CC24C6F3F300E1F3C4 /* SongListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SongListModel.m; sourceTree = "<group>"; };
 		2729F7CE24C7D43600E1F3C4 /* 酷乐秀.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "酷乐秀.entitlements"; sourceTree = "<group>"; };
+		2729F7CF24C8174A00E1F3C4 /* FileNameView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileNameView.h; sourceTree = "<group>"; };
+		2729F7D024C8174A00E1F3C4 /* FileNameView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FileNameView.m; sourceTree = "<group>"; };
+		2729F7D224C8175E00E1F3C4 /* FileNameView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FileNameView.xib; sourceTree = "<group>"; };
+		2729F7D824C81E9B00E1F3C4 /* ExamViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExamViewController.h; sourceTree = "<group>"; };
+		2729F7D924C81E9B00E1F3C4 /* ExamViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExamViewController.m; sourceTree = "<group>"; };
+		2729F7DB24C81FA200E1F3C4 /* LibraryTipsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LibraryTipsView.h; sourceTree = "<group>"; };
+		2729F7DC24C81FA200E1F3C4 /* LibraryTipsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LibraryTipsView.m; sourceTree = "<group>"; };
+		2729F7DE24C81FB000E1F3C4 /* LibraryTipsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LibraryTipsView.xib; sourceTree = "<group>"; };
+		2729F7E024C8244100E1F3C4 /* ExamListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExamListCell.h; sourceTree = "<group>"; };
+		2729F7E124C8244100E1F3C4 /* ExamListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExamListCell.m; sourceTree = "<group>"; };
+		2729F7E224C8244100E1F3C4 /* ExamListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ExamListCell.xib; sourceTree = "<group>"; };
 		27476F4324BBFB5900181362 /* 酷乐秀.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "酷乐秀.app"; sourceTree = BUILT_PRODUCTS_DIR; };
 		27476F4624BBFB5900181362 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		27476F4724BBFB5900181362 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -1058,6 +1076,37 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		2729F7D424C81CA200E1F3C4 /* RecordExam */ = {
+			isa = PBXGroup;
+			children = (
+				2729F7D524C81CA200E1F3C4 /* Controller */,
+				2729F7D624C81CA300E1F3C4 /* Model */,
+				2729F7D724C81CA300E1F3C4 /* View */,
+			);
+			path = RecordExam;
+			sourceTree = "<group>";
+		};
+		2729F7D524C81CA200E1F3C4 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		2729F7D624C81CA300E1F3C4 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		2729F7D724C81CA300E1F3C4 /* View */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		27476F3A24BBFB5900181362 = {
 			isa = PBXGroup;
 			children = (
@@ -1330,6 +1379,7 @@
 		2747700324BC0C0100181362 /* UI */ = {
 			isa = PBXGroup;
 			children = (
+				2729F7D424C81CA200E1F3C4 /* RecordExam */,
 				2747700424BC0C0100181362 /* Home */,
 				2748F8EB24C05F30003F8E11 /* ExamLibrary */,
 				2747705624BC0C0100181362 /* Exam */,
@@ -2250,6 +2300,8 @@
 		2748F8EC24C05F30003F8E11 /* Controller */ = {
 			isa = PBXGroup;
 			children = (
+				2729F7D824C81E9B00E1F3C4 /* ExamViewController.h */,
+				2729F7D924C81E9B00E1F3C4 /* ExamViewController.m */,
 				2748F8EF24C05F4C003F8E11 /* ExamLibraryController.h */,
 				2748F8F024C05F4C003F8E11 /* ExamLibraryController.m */,
 				2729F7C524C6C87400E1F3C4 /* OpenFileViewController.h */,
@@ -2272,9 +2324,18 @@
 		2748F8EE24C05F30003F8E11 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				2729F7E024C8244100E1F3C4 /* ExamListCell.h */,
+				2729F7E124C8244100E1F3C4 /* ExamListCell.m */,
+				2729F7E224C8244100E1F3C4 /* ExamListCell.xib */,
 				2748F8F224C1389F003F8E11 /* ExamLibraryListCell.h */,
 				2748F8F324C1389F003F8E11 /* ExamLibraryListCell.m */,
 				2748F8F424C1389F003F8E11 /* ExamLibraryListCell.xib */,
+				2729F7CF24C8174A00E1F3C4 /* FileNameView.h */,
+				2729F7D024C8174A00E1F3C4 /* FileNameView.m */,
+				2729F7D224C8175E00E1F3C4 /* FileNameView.xib */,
+				2729F7DB24C81FA200E1F3C4 /* LibraryTipsView.h */,
+				2729F7DC24C81FA200E1F3C4 /* LibraryTipsView.m */,
+				2729F7DE24C81FB000E1F3C4 /* LibraryTipsView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -2642,6 +2703,7 @@
 				274771AE24BC0C0500181362 /* mss_browseLoading@2x.png in Resources */,
 				27A008CE24BD9E950002452B /* SettingBodyView.xib in Resources */,
 				2794D1BF24BD4D0C00BAF6F3 /* FSBodyView.xib in Resources */,
+				2729F7E424C8244100E1F3C4 /* ExamListCell.xib in Resources */,
 				27A008E524BDA6C40002452B /* FeedbackBodyView.xib in Resources */,
 				2747718A24BC0C0500181362 /* WMPlayer.bundle in Resources */,
 				27476F5624BBFB5C00181362 /* LaunchScreen.storyboard in Resources */,
@@ -2654,6 +2716,7 @@
 				27A008A724BD96C50002452B /* NetworkBodyView.xib in Resources */,
 				2794D1C924BD631A00BAF6F3 /* ModifyBodyView.xib in Resources */,
 				27A008DB24BDA6950002452B /* PhoneChangeBodyView.xib in Resources */,
+				2729F7DF24C81FB000E1F3C4 /* LibraryTipsView.xib in Resources */,
 				27A008FE24BECDFC0002452B /* HomeBodyView.xib in Resources */,
 				274771AC24BC0C0500181362 /* mss_browseLoading@3x.png in Resources */,
 				274771ED24BC0C0500181362 /* LoginBodyView.xib in Resources */,
@@ -2667,6 +2730,7 @@
 				2747728024BC0C7C00181362 /* RongCloudKit.strings in Resources */,
 				2748F8F624C138A0003F8E11 /* ExamLibraryListCell.xib in Resources */,
 				27476F5124BBFB5900181362 /* Main.storyboard in Resources */,
+				2729F7D324C8175E00E1F3C4 /* FileNameView.xib in Resources */,
 				27EF3EF324BEE885002068A2 /* NotifyMessageCell.xib in Resources */,
 				27EF3F0024BF016B002068A2 /* WaitExamBodyView.xib in Resources */,
 				27A008A924BD96C50002452B /* KSNetworkAlert.xib in Resources */,
@@ -2898,6 +2962,7 @@
 				27EF3EF624BEF1DA002068A2 /* TicketBodyView.m in Sources */,
 				274771CC24BC0C0500181362 /* UIView+MBProgressHUD.m in Sources */,
 				274771F624BC0C0500181362 /* KSDiskCache.m in Sources */,
+				2729F7E324C8244100E1F3C4 /* ExamListCell.m in Sources */,
 				2747721224BC0C0500181362 /* NSDate+Extension.m in Sources */,
 				2747720924BC0C0500181362 /* UIAlertController+Extend.m in Sources */,
 				27A008C624BD99BD0002452B /* UserViewController.m in Sources */,
@@ -2967,6 +3032,7 @@
 				2747724B24BC0C0500181362 /* JXCategoryNumberView.m in Sources */,
 				2747721324BC0C0500181362 /* NSString+Extension.m in Sources */,
 				27A008CC24BD9E8A0002452B /* SettingBodyView.m in Sources */,
+				2729F7DA24C81E9B00E1F3C4 /* ExamViewController.m in Sources */,
 				2747721B24BC0C0500181362 /* UIView+XIBView.m in Sources */,
 				2747723E24BC0C0500181362 /* JXCategoryIndicatorView.m in Sources */,
 				2747725424BC0C0500181362 /* MBProgressHUD+NJ.m in Sources */,
@@ -2986,6 +3052,7 @@
 				274771AB24BC0C0500181362 /* MSSBrowseRemindView.m in Sources */,
 				274771A924BC0C0500181362 /* MSSBrowseBaseViewController.m in Sources */,
 				27A008A524BD96C50002452B /* NetworkingCheckController.m in Sources */,
+				2729F7D124C8174A00E1F3C4 /* FileNameView.m in Sources */,
 				27EF3EFE24BF015A002068A2 /* WaitExamBodyView.m in Sources */,
 				274771C724BC0C0500181362 /* KSRequestManager.m in Sources */,
 				2747722824BC0C0500181362 /* GRCreateManager.m in Sources */,
@@ -2994,6 +3061,7 @@
 				27476F4824BBFB5900181362 /* AppDelegate.m in Sources */,
 				2747725A24BC0C0500181362 /* NSString+phone.m in Sources */,
 				2747725124BC0C0500181362 /* JXCategoryBaseView.m in Sources */,
+				2729F7DD24C81FA200E1F3C4 /* LibraryTipsView.m in Sources */,
 				274771E424BC0C0500181362 /* NotifyMessageViewController.m in Sources */,
 				2747724F24BC0C0500181362 /* JXCategoryCollectionView.m in Sources */,
 				274771AA24BC0C0500181362 /* MSSBrowseZoomScrollView.m in Sources */,

+ 6 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/Contents.json

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

+ 22 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/tips_cancle@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_cancle.imageset/tips_cancle@3x.png


+ 22 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/tips_icon@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/ExamLibrary/tips_icon.imageset/tips_icon@3x.png


+ 0 - 13
MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m

@@ -555,19 +555,6 @@
     [self renderMainContainerView];
 }
 
-- (void)checkNodePlay {
-    
-}
-
-// 播放节拍器的回调
-- (void)playNodeAction:(BOOL)enable userId:(NSString *)userId rate:(int)rate beatType:(BeatType)type volume:(NSInteger)volume {
-    NSLog(@"playNodeAction userId:%@ enable:%@ beatType:%@ rate:%@ volume:%@",userId,@(enable),@(type), @(rate), @(volume));
-    RoomMember *curMember = [ClassroomService sharedService].currentRoom.currentMember;
-    if (curMember.role == RoleStudent) {
-
-    }
-}
-
 
 
 #pragma mark --- RTCServiceDelegate  自己发布流成功回调

+ 17 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.h

@@ -0,0 +1,17 @@
+//
+//  ExamViewController.h
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ExamViewController : KSBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 123 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.m

@@ -0,0 +1,123 @@
+//
+//  ExamViewController.m
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "ExamViewController.h"
+#import "LibraryTipsView.h"
+#import "ExamListCell.h"
+#import "ExamLibraryController.h"
+
+@interface ExamViewController ()<UITableViewDelegate, UITableViewDataSource>
+
+@property (nonatomic, strong) LibraryTipsView *tipsView;
+
+@property (nonatomic, strong) UITableView *tableView;
+
+@end
+
+@implementation ExamViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"考级曲库"];
+    [self configUI];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
+    if(@available(iOS 13.0, *)){
+        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent;
+    }
+    [self requestData];
+}
+
+- (void)requestData {
+    [self.tableView reloadData];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.tipsView];
+    [self.view addSubview:self.tableView];
+}
+
+
+#pragma mark ---- table data source
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+//    return self.dataArray.count;
+    return 3;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    ExamListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ExamListCell"];
+    MJWeakSelf;
+    [cell configCellWithSource:@"" callback:^(id source) {
+        [weakSelf examLibraryView:source];
+    }];
+    return cell;
+}
+
+- (void)examLibraryView:(id)source {
+    ExamLibraryController *libraryVC = [[ExamLibraryController alloc] init];
+    [self.navigationController pushViewController:libraryVC animated:YES];
+}
+
+
+#pragma mark ------- lazying
+- (UITableView *)tableView {
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 37.5, kScreenWidth, kScreenHeight - kNaviBarHeight - 37.5 - iPhoneXSafeBottomMargin) style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.rowHeight = 128;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.backgroundColor = HexRGB(0xf3f4f8);
+        _tableView.showsVerticalScrollIndicator = NO;
+        [_tableView registerNib:[UINib nibWithNibName:@"ExamListCell" bundle:nil] forCellReuseIdentifier:@"ExamListCell"];
+        
+        UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 10)];
+        headerView.backgroundColor = HexRGB(0xf3f4f8);
+        _tableView.tableHeaderView = headerView;
+        
+        UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 10)];
+        bottomView.backgroundColor = HexRGB(0xf3f4f8);
+        _tableView.tableFooterView = bottomView;
+    }
+    return _tableView;
+}
+
+- (LibraryTipsView *)tipsView {
+    if (!_tipsView) {
+        _tipsView = [LibraryTipsView shareInstance];
+        _tipsView.frame = CGRectMake(0, 0, kScreenWidth, 37.5);
+        MJWeakSelf;
+        [_tipsView cancleCallback:^{
+            [weakSelf removeTipsView];
+        }];
+    }
+    return _tipsView;
+}
+
+- (void)removeTipsView {
+    [self.tipsView removeFromSuperview];
+    // 刷新UI
+    self.tableView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin);
+}
+
+/*
+#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

+ 21 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.h

@@ -0,0 +1,21 @@
+//
+//  ExamListCell.h
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^CheckCallback)(id source);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ExamListCell : UITableViewCell
+
+- (void)configCellWithSource:(id)source callback:(CheckCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 44 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.m

@@ -0,0 +1,44 @@
+//
+//  ExamListCell.m
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "ExamListCell.h"
+
+@interface ExamListCell ()
+
+@property (weak, nonatomic) IBOutlet UILabel *examName;
+
+@property (nonatomic, copy) CheckCallback callback;
+@end
+
+@implementation ExamListCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+}
+
+- (void)configCellWithSource:(id)source callback:(CheckCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    // 赋值
+}
+- (IBAction)checkLibrary:(id)sender {
+    if (self.callback) {
+        self.callback(@"");
+    }
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 92 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.xib

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" 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="16087"/>
+        <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" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="ExamListCell">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="127"/>
+            <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="375" height="127"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSe-C0-CoG">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="54"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考级名称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oKH-jv-WHB">
+                                <rect key="frame" x="16" y="16.5" width="80" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="80" id="jnI-Kd-v4U"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="中国音乐学院" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J93-t7-BFk">
+                                <rect key="frame" x="116" y="17" width="243" height="20"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstItem="oKH-jv-WHB" firstAttribute="leading" secondItem="KSe-C0-CoG" secondAttribute="leading" constant="16" id="IL9-QP-btl"/>
+                            <constraint firstAttribute="trailing" secondItem="J93-t7-BFk" secondAttribute="trailing" constant="16" id="LX5-Vc-eLu"/>
+                            <constraint firstItem="oKH-jv-WHB" firstAttribute="centerY" secondItem="KSe-C0-CoG" secondAttribute="centerY" id="SUJ-wi-iKy"/>
+                            <constraint firstItem="J93-t7-BFk" firstAttribute="centerY" secondItem="KSe-C0-CoG" secondAttribute="centerY" id="a3l-P0-4w1"/>
+                            <constraint firstItem="J93-t7-BFk" firstAttribute="leading" secondItem="oKH-jv-WHB" secondAttribute="trailing" constant="20" id="fJ2-d2-cFN"/>
+                            <constraint firstAttribute="height" constant="54" id="hDd-Kn-nr2"/>
+                        </constraints>
+                    </view>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DiB-cc-Cfc">
+                        <rect key="frame" x="0.0" y="55" width="375" height="54"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="97F-i4-JR3">
+                                <rect key="frame" x="132.5" y="5" width="110" height="44"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="110" id="lH0-bU-Q3e"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <state key="normal" title="查看曲库信息">
+                                    <color key="titleColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="checkLibrary:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="SId-PF-tDc"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstAttribute="bottom" secondItem="97F-i4-JR3" secondAttribute="bottom" constant="5" id="HAm-wr-oLR"/>
+                            <constraint firstAttribute="height" constant="54" id="Pv3-4q-qCm"/>
+                            <constraint firstItem="97F-i4-JR3" firstAttribute="top" secondItem="DiB-cc-Cfc" secondAttribute="top" constant="5" id="iC3-hn-lh6"/>
+                            <constraint firstItem="97F-i4-JR3" firstAttribute="centerX" secondItem="DiB-cc-Cfc" secondAttribute="centerX" id="nEi-wY-BB5"/>
+                        </constraints>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="DiB-cc-Cfc" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="0CQ-eY-qji"/>
+                    <constraint firstItem="KSe-C0-CoG" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="9ve-1X-zKS"/>
+                    <constraint firstAttribute="trailing" secondItem="DiB-cc-Cfc" secondAttribute="trailing" id="OQe-hp-4xi"/>
+                    <constraint firstItem="DiB-cc-Cfc" firstAttribute="top" secondItem="KSe-C0-CoG" secondAttribute="bottom" constant="1" id="aGJ-dL-JaZ"/>
+                    <constraint firstItem="KSe-C0-CoG" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="hsC-bq-PFP"/>
+                    <constraint firstAttribute="trailing" secondItem="KSe-C0-CoG" secondAttribute="trailing" id="rRc-Iv-mDf"/>
+                </constraints>
+            </tableViewCellContentView>
+            <color key="backgroundColor" red="0.95294117647058818" green="0.95686274509803915" blue="0.97254901960784312" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <connections>
+                <outlet property="examName" destination="J93-t7-BFk" id="4kv-LR-eHY"/>
+            </connections>
+            <point key="canvasLocation" x="132" y="96"/>
+        </tableViewCell>
+    </objects>
+</document>

+ 19 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.h

@@ -0,0 +1,19 @@
+//
+//  FileNameView.h
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FileNameView : UIView
+
++ (instancetype)shareInstance;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 27 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.m

@@ -0,0 +1,27 @@
+//
+//  FileNameView.m
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "FileNameView.h"
+
+
+@implementation FileNameView
+
++ (instancetype)shareInstance {
+    FileNameView *view = [[[NSBundle mainBundle] loadNibNamed:@"FileNameView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 48 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/FileNameView.xib

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" 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="16087"/>
+        <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"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="FileNameView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="82"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5c7-QP-j9G">
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="45"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="月光奏鸣曲" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kdV-TT-92o">
+                            <rect key="frame" x="16" y="12.5" width="382" height="20.5"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                    <constraints>
+                        <constraint firstItem="kdV-TT-92o" firstAttribute="centerY" secondItem="5c7-QP-j9G" secondAttribute="centerY" id="AXC-uz-FTL"/>
+                        <constraint firstAttribute="trailing" secondItem="kdV-TT-92o" secondAttribute="trailing" constant="16" id="JhV-Pv-DbF"/>
+                        <constraint firstItem="kdV-TT-92o" firstAttribute="leading" secondItem="5c7-QP-j9G" secondAttribute="leading" constant="16" id="NIa-oU-Tl7"/>
+                        <constraint firstAttribute="height" constant="45" id="s08-PM-8dE"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.95294117647058818" green="0.95686274509803915" blue="0.97254901960784312" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="5c7-QP-j9G" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="FcP-Zk-Mxw"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="5c7-QP-j9G" secondAttribute="trailing" id="Hcj-hw-Awa"/>
+                <constraint firstItem="5c7-QP-j9G" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="oss-Wv-biQ"/>
+            </constraints>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <point key="canvasLocation" x="131.8840579710145" y="-48.883928571428569"/>
+        </view>
+    </objects>
+</document>

+ 24 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.h

@@ -0,0 +1,24 @@
+//
+//  LibraryTipsView.h
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+
+typedef void(^CancleAction)(void);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LibraryTipsView : UIView
+
++ (instancetype)shareInstance;
+
+- (void)cancleCallback:(CancleAction)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 45 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.m

@@ -0,0 +1,45 @@
+//
+//  LibraryTipsView.m
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/7/22.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "LibraryTipsView.h"
+
+
+@interface LibraryTipsView ()
+
+@property (nonatomic, copy) CancleAction callback;
+
+@end
+
+@implementation LibraryTipsView
+
++ (instancetype)shareInstance {
+    LibraryTipsView *view = [[[NSBundle mainBundle] loadNibNamed:@"LibraryTipsView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)cancleCallback:(CancleAction)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)cancleAction:(id)sender {
+    if (self.callback) {
+        self.callback();
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 61 - 0
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/LibraryTipsView.xib

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
+        <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"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="LibraryTipsView">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="38"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="tips_icon" translatesAutoresizingMaskIntoConstraints="NO" id="6f4-rH-h5I">
+                    <rect key="frame" x="12" y="10" width="18" height="18"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="18" id="C4s-P2-b4d"/>
+                        <constraint firstAttribute="width" constant="18" id="dmA-QH-VyQ"/>
+                    </constraints>
+                </imageView>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Oab-Cx-ld4">
+                    <rect key="frame" x="337" y="0.0" width="38" height="38"/>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="Oab-Cx-ld4" secondAttribute="height" multiplier="1:1" id="TLO-oc-O7m"/>
+                    </constraints>
+                    <state key="normal" image="tips_cancle"/>
+                    <connections>
+                        <action selector="cancleAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="8r8-me-rpJ"/>
+                    </connections>
+                </button>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击考级项目,可以查看当前考级的曲库" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r91-OY-37t">
+                    <rect key="frame" x="38" y="10" width="289" height="18"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    <color key="textColor" red="1" green="0.37647058823529411" blue="0.062745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <color key="backgroundColor" red="1" green="0.97647058823529409" blue="0.92941176470588238" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="Oab-Cx-ld4" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="0IN-7Z-zW7"/>
+                <constraint firstAttribute="trailing" secondItem="Oab-Cx-ld4" secondAttribute="trailing" id="1BH-9K-Mgd"/>
+                <constraint firstAttribute="bottom" secondItem="Oab-Cx-ld4" secondAttribute="bottom" id="BXn-jD-RPC"/>
+                <constraint firstItem="6f4-rH-h5I" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="12" id="C1b-lc-h3G"/>
+                <constraint firstItem="r91-OY-37t" firstAttribute="leading" secondItem="6f4-rH-h5I" secondAttribute="trailing" constant="8" id="DUq-Hn-XaD"/>
+                <constraint firstItem="Oab-Cx-ld4" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Qhh-5d-Ees"/>
+                <constraint firstItem="6f4-rH-h5I" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="UBf-FA-96W"/>
+                <constraint firstItem="r91-OY-37t" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="YFE-vG-huR"/>
+                <constraint firstItem="Oab-Cx-ld4" firstAttribute="leading" secondItem="r91-OY-37t" secondAttribute="trailing" constant="10" id="wY5-7c-rPf"/>
+            </constraints>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="127.53623188405798" y="-14.0625"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="tips_cancle" width="18" height="18"/>
+        <image name="tips_icon" width="18" height="18"/>
+    </resources>
+</document>

+ 3 - 3
MusicGradeExam/MusicGradeExam/UI/Home/Controller/HomeViewController.m

@@ -15,7 +15,7 @@
 #import "TYPageControl.h"
 #import "HomeExamTicketCell.h"
 #import "WaitExamViewController.h"
-#import "ExamLibraryController.h"
+#import "ExamViewController.h"
 
 @interface HomeViewController ()<TYCyclePagerViewDataSource,TYCyclePagerViewDelegate>
 
@@ -169,8 +169,8 @@
             break;
         case HOMETYPE_MUSICLIBRARY: // 考级曲库
         {
-            ExamLibraryController *libraryVC = [[ExamLibraryController alloc] init];
-            [self.navigationController pushViewController:libraryVC animated:YES];
+            ExamViewController *examCtrl = [[ExamViewController alloc] init];
+            [self.navigationController pushViewController:examCtrl animated:YES];
         }
             break;
         default: