Commit e977cdf103150b8b02ab4b0c59765ab8174ce16c
Exists in
newLive
Merge branch 'newLive' of http://git.shunzhi.net/iosgroup/newlive into newLive
Showing
15 changed files
with
652 additions
and
63 deletions
Show diff stats
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
@@ -150,6 +150,9 @@ | @@ -150,6 +150,9 @@ | ||
150 | BF7722F91ED3C3E900226D44 /* FilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722F81ED3C3E900226D44 /* FilterView.swift */; }; | 150 | BF7722F91ED3C3E900226D44 /* FilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722F81ED3C3E900226D44 /* FilterView.swift */; }; |
151 | BF7722FC1ED3C54B00226D44 /* FilterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */; }; | 151 | BF7722FC1ED3C54B00226D44 /* FilterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */; }; |
152 | BF7722FD1ED3C54B00226D44 /* FilterCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */; }; | 152 | BF7722FD1ED3C54B00226D44 /* FilterCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */; }; |
153 | + BF7723011ED5660000226D44 /* FilterFootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7723001ED5660000226D44 /* FilterFootView.swift */; }; | ||
154 | + BF7723031ED5661F00226D44 /* FilterFootView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7723021ED5661F00226D44 /* FilterFootView.xib */; }; | ||
155 | + BF7723051ED5667500226D44 /* FilterListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7723041ED5667500226D44 /* FilterListViewController.swift */; }; | ||
153 | BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; }; | 156 | BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; }; |
154 | BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; }; | 157 | BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; }; |
155 | BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; }; | 158 | BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; }; |
@@ -480,6 +483,9 @@ | @@ -480,6 +483,9 @@ | ||
480 | BF7722F81ED3C3E900226D44 /* FilterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterView.swift; sourceTree = "<group>"; }; | 483 | BF7722F81ED3C3E900226D44 /* FilterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterView.swift; sourceTree = "<group>"; }; |
481 | BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterCollectionViewCell.swift; sourceTree = "<group>"; }; | 484 | BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterCollectionViewCell.swift; sourceTree = "<group>"; }; |
482 | BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterCollectionViewCell.xib; sourceTree = "<group>"; }; | 485 | BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterCollectionViewCell.xib; sourceTree = "<group>"; }; |
486 | + BF7723001ED5660000226D44 /* FilterFootView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterFootView.swift; sourceTree = "<group>"; }; | ||
487 | + BF7723021ED5661F00226D44 /* FilterFootView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterFootView.xib; sourceTree = "<group>"; }; | ||
488 | + BF7723041ED5667500226D44 /* FilterListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterListViewController.swift; sourceTree = "<group>"; }; | ||
483 | BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; }; | 489 | BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; }; |
484 | BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; }; | 490 | BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; }; |
485 | BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; }; | 491 | BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; }; |
@@ -643,6 +649,7 @@ | @@ -643,6 +649,7 @@ | ||
643 | children = ( | 649 | children = ( |
644 | 5904FC471ECA8B8C00E631FF /* ResourceViewController.swift */, | 650 | 5904FC471ECA8B8C00E631FF /* ResourceViewController.swift */, |
645 | BF7722F21ED283D400226D44 /* FilterViewController.swift */, | 651 | BF7722F21ED283D400226D44 /* FilterViewController.swift */, |
652 | + BF7723041ED5667500226D44 /* FilterListViewController.swift */, | ||
646 | 59AE3DFA1ECECD7D003E2C62 /* LiveInforViewController.swift */, | 653 | 59AE3DFA1ECECD7D003E2C62 /* LiveInforViewController.swift */, |
647 | 59AE3DFC1ECED5B1003E2C62 /* MoivePlayerViewController.swift */, | 654 | 59AE3DFC1ECED5B1003E2C62 /* MoivePlayerViewController.swift */, |
648 | 597185B41ECA990C00D7F478 /* Resource.storyboard */, | 655 | 597185B41ECA990C00D7F478 /* Resource.storyboard */, |
@@ -1086,6 +1093,8 @@ | @@ -1086,6 +1093,8 @@ | ||
1086 | BF7722F61ED3C3CD00226D44 /* FilterView.xib */, | 1093 | BF7722F61ED3C3CD00226D44 /* FilterView.xib */, |
1087 | BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */, | 1094 | BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */, |
1088 | BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */, | 1095 | BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */, |
1096 | + BF7723001ED5660000226D44 /* FilterFootView.swift */, | ||
1097 | + BF7723021ED5661F00226D44 /* FilterFootView.xib */, | ||
1089 | ); | 1098 | ); |
1090 | path = View; | 1099 | path = View; |
1091 | sourceTree = "<group>"; | 1100 | sourceTree = "<group>"; |
@@ -1462,6 +1471,7 @@ | @@ -1462,6 +1471,7 @@ | ||
1462 | 599B2CD51DE52F7E00B4F7FD /* TencentOpenApi_IOS_Bundle.bundle in Resources */, | 1471 | 599B2CD51DE52F7E00B4F7FD /* TencentOpenApi_IOS_Bundle.bundle in Resources */, |
1463 | BFBB83EA1ECC445D008B404B /* Login.storyboard in Resources */, | 1472 | BFBB83EA1ECC445D008B404B /* Login.storyboard in Resources */, |
1464 | 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */, | 1473 | 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */, |
1474 | + BF7723031ED5661F00226D44 /* FilterFootView.xib in Resources */, | ||
1465 | BF25DFE61DDAA36A003EC0C1 /* Info.plist in Resources */, | 1475 | BF25DFE61DDAA36A003EC0C1 /* Info.plist in Resources */, |
1466 | BFF5F4771DD5AA5C00D33B89 /* 上传头像.png in Resources */, | 1476 | BFF5F4771DD5AA5C00D33B89 /* 上传头像.png in Resources */, |
1467 | 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */, | 1477 | 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */, |
@@ -1566,6 +1576,7 @@ | @@ -1566,6 +1576,7 @@ | ||
1566 | 59AE3DFB1ECECD7D003E2C62 /* LiveInforViewController.swift in Sources */, | 1576 | 59AE3DFB1ECECD7D003E2C62 /* LiveInforViewController.swift in Sources */, |
1567 | BF7B759B1E305A6D0011D5C7 /* MJRefreshAutoGifFooter.m in Sources */, | 1577 | BF7B759B1E305A6D0011D5C7 /* MJRefreshAutoGifFooter.m in Sources */, |
1568 | BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */, | 1578 | BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */, |
1579 | + BF7723011ED5660000226D44 /* FilterFootView.swift in Sources */, | ||
1569 | BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */, | 1580 | BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */, |
1570 | BF7B759E1E305A6D0011D5C7 /* MJRefreshBackGifFooter.m in Sources */, | 1581 | BF7B759E1E305A6D0011D5C7 /* MJRefreshBackGifFooter.m in Sources */, |
1571 | 59AE3DF91ECE8A90003E2C62 /* pinyin.c in Sources */, | 1582 | 59AE3DF91ECE8A90003E2C62 /* pinyin.c in Sources */, |
@@ -1582,6 +1593,7 @@ | @@ -1582,6 +1593,7 @@ | ||
1582 | BF25DFFF1DDAA36A003EC0C1 /* SDWebImageDownloaderOperation.m in Sources */, | 1593 | BF25DFFF1DDAA36A003EC0C1 /* SDWebImageDownloaderOperation.m in Sources */, |
1583 | 59AE3DFD1ECED5B1003E2C62 /* MoivePlayerViewController.swift in Sources */, | 1594 | 59AE3DFD1ECED5B1003E2C62 /* MoivePlayerViewController.swift in Sources */, |
1584 | BF25DFF01DDAA36A003EC0C1 /* SessionDelegate.swift in Sources */, | 1595 | BF25DFF01DDAA36A003EC0C1 /* SessionDelegate.swift in Sources */, |
1596 | + BF7723051ED5667500226D44 /* FilterListViewController.swift in Sources */, | ||
1585 | BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */, | 1597 | BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */, |
1586 | BF25DFEC1DDAA36A003EC0C1 /* Response.swift in Sources */, | 1598 | BF25DFEC1DDAA36A003EC0C1 /* Response.swift in Sources */, |
1587 | BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */, | 1599 | BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */, |
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Resource/Contents.json
0 → 100644
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Resource/resource_diselect.imageset/Contents.json
0 → 100644
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "idiom" : "universal", | ||
5 | + "scale" : "1x" | ||
6 | + }, | ||
7 | + { | ||
8 | + "idiom" : "universal", | ||
9 | + "filename" : "cb48.png", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "version" : 1, | ||
19 | + "author" : "xcode" | ||
20 | + } | ||
21 | +} | ||
0 | \ No newline at end of file | 22 | \ No newline at end of file |
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Resource/resource_diselect.imageset/cb48.png
0 → 100644
1.94 KB
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Resource/resource_select.imageset/Contents.json
0 → 100644
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "idiom" : "universal", | ||
5 | + "scale" : "1x" | ||
6 | + }, | ||
7 | + { | ||
8 | + "idiom" : "universal", | ||
9 | + "filename" : "gou.png", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "version" : 1, | ||
19 | + "author" : "xcode" | ||
20 | + } | ||
21 | +} | ||
0 | \ No newline at end of file | 22 | \ No newline at end of file |
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Resource/resource_select.imageset/gou.png
0 → 100644
2.73 KB
YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fhe-aI-EYq"> | 1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fhe-aI-EYq"> | ||
3 | <device id="retina4_7" orientation="portrait"> | 3 | <device id="retina4_7" orientation="portrait"> |
4 | <adaptation id="fullscreen"/> | 4 | <adaptation id="fullscreen"/> |
5 | </device> | 5 | </device> |
@@ -179,7 +179,7 @@ | @@ -179,7 +179,7 @@ | ||
179 | <constraint firstAttribute="height" constant="44" id="PWr-Wf-TcS"/> | 179 | <constraint firstAttribute="height" constant="44" id="PWr-Wf-TcS"/> |
180 | </constraints> | 180 | </constraints> |
181 | <prototypes> | 181 | <prototypes> |
182 | - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="vmV-r2-2pv"> | 182 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="vmV-r2-2pv"> |
183 | <rect key="frame" x="0.0" y="28" width="375" height="44"/> | 183 | <rect key="frame" x="0.0" y="28" width="375" height="44"/> |
184 | <autoresizingMask key="autoresizingMask"/> | 184 | <autoresizingMask key="autoresizingMask"/> |
185 | <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="vmV-r2-2pv" id="tft-RM-f2B"> | 185 | <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="vmV-r2-2pv" id="tft-RM-f2B"> |
@@ -1435,6 +1435,9 @@ | @@ -1435,6 +1435,9 @@ | ||
1435 | <state key="normal" title="筛选" image="starLive"> | 1435 | <state key="normal" title="筛选" image="starLive"> |
1436 | <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | 1436 | <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
1437 | </state> | 1437 | </state> |
1438 | + <connections> | ||
1439 | + <action selector="jumpFilterVCAction:" destination="VUr-8w-9Ht" eventType="touchUpInside" id="Po2-Wd-wOq"/> | ||
1440 | + </connections> | ||
1438 | </button> | 1441 | </button> |
1439 | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T2j-JJ-ft5"> | 1442 | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T2j-JJ-ft5"> |
1440 | <rect key="frame" x="245" y="14" width="57" height="22"/> | 1443 | <rect key="frame" x="245" y="14" width="57" height="22"/> |
@@ -1573,7 +1576,7 @@ | @@ -1573,7 +1576,7 @@ | ||
1573 | <constraint firstAttribute="height" constant="44" id="s3i-TZ-HsX"/> | 1576 | <constraint firstAttribute="height" constant="44" id="s3i-TZ-HsX"/> |
1574 | </constraints> | 1577 | </constraints> |
1575 | <prototypes> | 1578 | <prototypes> |
1576 | - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="OoX-sY-EJ0"> | 1579 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="OoX-sY-EJ0"> |
1577 | <rect key="frame" x="0.0" y="28" width="375" height="44"/> | 1580 | <rect key="frame" x="0.0" y="28" width="375" height="44"/> |
1578 | <autoresizingMask key="autoresizingMask"/> | 1581 | <autoresizingMask key="autoresizingMask"/> |
1579 | <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="OoX-sY-EJ0" id="cE2-H1-hR9"> | 1582 | <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="OoX-sY-EJ0" id="cE2-H1-hR9"> |
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/MainHomeTableViewController.swift
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | // | 7 | // |
8 | 8 | ||
9 | import UIKit | 9 | import UIKit |
10 | - | 10 | +import AVKit |
11 | class MainHomeTableViewController: UITableViewController { | 11 | class MainHomeTableViewController: UITableViewController { |
12 | @IBOutlet var tableHeaderView: UIView! | 12 | @IBOutlet var tableHeaderView: UIView! |
13 | let current=AppDelegate.instance().accountManager | 13 | let current=AppDelegate.instance().accountManager |
@@ -113,6 +113,15 @@ class MainHomeTableViewController: UITableViewController { | @@ -113,6 +113,15 @@ class MainHomeTableViewController: UITableViewController { | ||
113 | let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController | 113 | let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController |
114 | vc.openIndexAry=[0,4] | 114 | vc.openIndexAry=[0,4] |
115 | self.navigationController?.pushViewController(vc, animated: true) | 115 | self.navigationController?.pushViewController(vc, animated: true) |
116 | + }else if indexPath.row==1{ | ||
117 | + //热门微课 | ||
118 | + self.tabBarController?.selectedIndex=2 | ||
119 | + }else if indexPath.row==2{ | ||
120 | + //资源 | ||
121 | + self.tabBarController?.selectedIndex=1 | ||
122 | + }else{ | ||
123 | + //校园电视台 | ||
124 | + self.tabBarController?.selectedIndex=3 | ||
116 | } | 125 | } |
117 | } | 126 | } |
118 | 127 | ||
@@ -209,8 +218,11 @@ class HomeSecondTableViewCell: UITableViewCell,UICollectionViewDelegate,UICollec | @@ -209,8 +218,11 @@ class HomeSecondTableViewCell: UITableViewCell,UICollectionViewDelegate,UICollec | ||
209 | } | 218 | } |
210 | } | 219 | } |
211 | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { | 220 | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
212 | - //点击进入学校 appRootViewController() | ||
213 | - NSLog("点击了****\(dataSet[indexPath.row])") | 221 | + let url = URL(string:dataSet[indexPath.row].f_ResourceUrl) |
222 | + let player = AVPlayerViewController() | ||
223 | + player.player = AVPlayer(url: url!) | ||
224 | + player.videoGravity = AVLayerVideoGravityResizeAspect | ||
225 | + appRootViewController().present(player, animated: true, completion: nil) | ||
214 | } | 226 | } |
215 | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { | 227 | func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
216 | return CGSize(width: (getScreenWidth()-45)/2, height: ((getScreenWidth()-45)/2/33*16+67)) | 228 | return CGSize(width: (getScreenWidth()-45)/2, height: ((getScreenWidth()-45)/2/33*16+67)) |
YouerLiveVideo/YouerLiveVideo/controllers/MicroCourse/MicroCourseViewController.swift
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | import UIKit | 9 | import UIKit |
10 | import AVKit | 10 | import AVKit |
11 | 11 | ||
12 | -class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UISearchResultsUpdating { | 12 | +class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UISearchResultsUpdating,UISearchBarDelegate{ |
13 | @IBOutlet var tableView: UITableView! | 13 | @IBOutlet var tableView: UITableView! |
14 | 14 | ||
15 | @IBOutlet var grayView: UIView! | 15 | @IBOutlet var grayView: UIView! |
@@ -18,9 +18,10 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -18,9 +18,10 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
18 | 18 | ||
19 | var searchController:UISearchController! | 19 | var searchController:UISearchController! |
20 | var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] | 20 | var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] |
21 | - var searchAry:[String]=[] | 21 | + var searchAry:[MicroCourseModel]=[] |
22 | var currentPage:Int=1 //当前页数,每次取十个数据 | 22 | var currentPage:Int=1 //当前页数,每次取十个数据 |
23 | var resourceData:[MicroCourseModel]=[] | 23 | var resourceData:[MicroCourseModel]=[] |
24 | + var parameter:Dictionary<String,AnyObject>? | ||
24 | override func viewDidLoad() { | 25 | override func viewDidLoad() { |
25 | super.viewDidLoad() | 26 | super.viewDidLoad() |
26 | self.configTheme() | 27 | self.configTheme() |
@@ -31,11 +32,27 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -31,11 +32,27 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
31 | self.tableView.reloadData() | 32 | self.tableView.reloadData() |
32 | } | 33 | } |
33 | }) | 34 | }) |
35 | + NotificationCenter.default.addObserver(self, selector: #selector(ResourceViewController.reloadTableView), name: NSNotification.Name(rawValue: "FilterReloadTableView"), object: nil) | ||
36 | + } | ||
37 | + //筛选结束后刷新界面 | ||
38 | + func reloadTableView(noti:Notification){ | ||
39 | + let parameters=(noti.object as! Dictionary<String,AnyObject>) | ||
40 | + if parameters["type"]?.int8Value==0{ | ||
41 | + parameter=parameters | ||
42 | + currentPage=1 | ||
43 | + resourceData.removeAll() | ||
44 | + refreshLivesAction(parameters: parameters, completionHandler: { (success) in | ||
45 | + if success{ | ||
46 | + self.tableView.reloadData() | ||
47 | + } | ||
48 | + }) | ||
49 | + } | ||
34 | } | 50 | } |
35 | func addSearchController(){ | 51 | func addSearchController(){ |
36 | self.definesPresentationContext=true | 52 | self.definesPresentationContext=true |
37 | searchController=UISearchController(searchResultsController: nil) | 53 | searchController=UISearchController(searchResultsController: nil) |
38 | searchController.delegate=self | 54 | searchController.delegate=self |
55 | + searchController.searchBar.delegate=self | ||
39 | searchController.searchResultsUpdater=self | 56 | searchController.searchResultsUpdater=self |
40 | searchController.searchBar.barTintColor=UIColor.groupTableViewBackground | 57 | searchController.searchBar.barTintColor=UIColor.groupTableViewBackground |
41 | searchController.searchBar.placeholder="搜索" | 58 | searchController.searchBar.placeholder="搜索" |
@@ -56,7 +73,11 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -56,7 +73,11 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
56 | //下拉刷新 | 73 | //下拉刷新 |
57 | self.currentPage=1 | 74 | self.currentPage=1 |
58 | self.resourceData.removeAll() | 75 | self.resourceData.removeAll() |
59 | - self.refreshLivesAction(parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | 76 | + var p:Dictionary<String,AnyObject>=["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject] |
77 | + if self.parameter != nil { | ||
78 | + p=self.parameter! | ||
79 | + } | ||
80 | + self.refreshLivesAction(parameters: p, completionHandler: { (success) in | ||
60 | if success{ | 81 | if success{ |
61 | self.tableView.reloadData() | 82 | self.tableView.reloadData() |
62 | } | 83 | } |
@@ -67,7 +88,11 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -67,7 +88,11 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
67 | tableView.mj_header=header | 88 | tableView.mj_header=header |
68 | tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { | 89 | tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { |
69 | //上拉加载更多 | 90 | //上拉加载更多 |
70 | - self.refreshLivesAction(parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | 91 | + var p:Dictionary<String,AnyObject>=["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject] |
92 | + if self.parameter != nil { | ||
93 | + p=self.parameter! | ||
94 | + } | ||
95 | + self.refreshLivesAction(parameters: p, completionHandler: { (success) in | ||
71 | if success{ | 96 | if success{ |
72 | self.tableView.reloadData() | 97 | self.tableView.reloadData() |
73 | } | 98 | } |
@@ -76,17 +101,23 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -76,17 +101,23 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
76 | }) | 101 | }) |
77 | } | 102 | } |
78 | // MARK: - 刷新数据接口 | 103 | // MARK: - 刷新数据接口 |
79 | - func refreshLivesAction(parameters:Dictionary<String,AnyObject>,completionHandler:@escaping (Bool) -> ()){ | 104 | + func refreshLivesAction(isSearch:Bool=false,parameters:Dictionary<String,AnyObject>,completionHandler:@escaping (Bool) -> ()){ |
80 | AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in | 105 | AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in |
81 | var success:Bool=true | 106 | var success:Bool=true |
82 | if error==nil { | 107 | if error==nil { |
83 | if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | 108 | if JSON.fromString(jsonString: str)!["status"].intValue == 1{ |
84 | httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | 109 | httpJsonResule(jsonString: str, error: error, successHandler: { (json) in |
85 | - if JSON.fromString(jsonString: str)!["data"].arrayValue.count>0{ | ||
86 | - self.currentPage+=1 | ||
87 | - } | ||
88 | - for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
89 | - self.resourceData.append(MicroCourseModel(j: item)) | 110 | + if isSearch { |
111 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
112 | + self.searchAry.append(MicroCourseModel(j: item)) | ||
113 | + } | ||
114 | + }else{ | ||
115 | + if JSON.fromString(jsonString: str)!["data"].arrayValue.count>0{ | ||
116 | + self.currentPage+=1 | ||
117 | + } | ||
118 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
119 | + self.resourceData.append(MicroCourseModel(j: item)) | ||
120 | + } | ||
90 | } | 121 | } |
91 | success=true | 122 | success=true |
92 | }, failHandler: { (error) in | 123 | }, failHandler: { (error) in |
@@ -104,6 +135,12 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -104,6 +135,12 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
104 | completionHandler(success) | 135 | completionHandler(success) |
105 | } | 136 | } |
106 | } | 137 | } |
138 | + // MARK: - 跳转到筛选 | ||
139 | + @IBAction func jumpFilterVCAction(_ sender: UIButton) { | ||
140 | + let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController | ||
141 | + vc.type=FilterParameter(type: 0) | ||
142 | + self.present(vc.wrapWithNavigationController(), animated: true, completion: nil) | ||
143 | + } | ||
107 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | 144 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
108 | if tableView==searchTableView{ | 145 | if tableView==searchTableView{ |
109 | return searchAry.count | 146 | return searchAry.count |
@@ -114,7 +151,7 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -114,7 +151,7 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
114 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | 151 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
115 | if tableView==searchTableView { | 152 | if tableView==searchTableView { |
116 | let cell=tableView.dequeueReusableCell(withIdentifier: "cell") | 153 | let cell=tableView.dequeueReusableCell(withIdentifier: "cell") |
117 | - cell?.textLabel?.text=searchAry[indexPath.row] | 154 | + cell?.textLabel?.text=searchAry[indexPath.row].f_Title |
118 | return cell! | 155 | return cell! |
119 | }else{ | 156 | }else{ |
120 | let cell=tableView.dequeueReusableCell(withIdentifier: "identifier") as! MicroCourseViewControllerTableViewCell | 157 | let cell=tableView.dequeueReusableCell(withIdentifier: "identifier") as! MicroCourseViewControllerTableViewCell |
@@ -125,12 +162,12 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -125,12 +162,12 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
125 | } | 162 | } |
126 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 163 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
127 | if tableView==searchTableView { | 164 | if tableView==searchTableView { |
128 | - let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController | ||
129 | - self.navigationController?.pushViewController(vc, animated: true) | 165 | + let url = URL(string:searchAry[indexPath.row].f_ResourceUrl) |
166 | + let player = AVPlayerViewController() | ||
167 | + player.player = AVPlayer(url: url!) | ||
168 | + player.videoGravity = AVLayerVideoGravityResizeAspect | ||
169 | + self.present(player, animated: true, completion: nil) | ||
130 | }else{ | 170 | }else{ |
131 | -// let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "LiveInforViewControllerVC") as! LiveInforViewController | ||
132 | - | ||
133 | -// self.navigationController?.pushViewController(vc, animated: true) | ||
134 | let url = URL(string:resourceData[indexPath.row].f_ResourceUrl) | 171 | let url = URL(string:resourceData[indexPath.row].f_ResourceUrl) |
135 | let player = AVPlayerViewController() | 172 | let player = AVPlayerViewController() |
136 | player.player = AVPlayer(url: url!) | 173 | player.player = AVPlayer(url: url!) |
@@ -140,6 +177,9 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -140,6 +177,9 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
140 | } | 177 | } |
141 | //取消键盘输入状态 | 178 | //取消键盘输入状态 |
142 | @IBAction func cancleSearchActivit(_ sender: UITapGestureRecognizer) { | 179 | @IBAction func cancleSearchActivit(_ sender: UITapGestureRecognizer) { |
180 | + self.searchAry.removeAll() | ||
181 | + searchTableHeight.constant=44 | ||
182 | + self.searchTableView.reloadData() | ||
143 | searchController.isActive=false | 183 | searchController.isActive=false |
144 | } | 184 | } |
145 | func willPresentSearchController(_ searchController: UISearchController) { | 185 | func willPresentSearchController(_ searchController: UISearchController) { |
@@ -149,17 +189,37 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | @@ -149,17 +189,37 @@ class MicroCourseViewController: UIViewController,UITableViewDelegate,UITableVie | ||
149 | searchTableHeight.constant=44 | 189 | searchTableHeight.constant=44 |
150 | grayView.isHidden=true | 190 | grayView.isHidden=true |
151 | } | 191 | } |
192 | + //searchaBarDelegate | ||
193 | + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { | ||
194 | + refreshLivesAction(isSearch: true,parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":1 as AnyObject,"keyword":searchBar.text as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | ||
195 | + if success{ | ||
196 | + if CGFloat((self.searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
197 | + self.searchTableHeight.constant=getScreenHeight()-64 | ||
198 | + }else{ | ||
199 | + self.searchTableHeight.constant=CGFloat((self.searchAry.count+1)*44) | ||
200 | + } | ||
201 | + self.searchTableView.reloadData() | ||
202 | + } | ||
203 | + }) | ||
204 | + } | ||
205 | + func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { | ||
206 | + self.searchAry.removeAll() | ||
207 | + searchTableHeight.constant=44 | ||
208 | + self.searchTableView.reloadData() | ||
209 | + searchController.isActive=false | ||
210 | + } | ||
211 | + | ||
152 | //谓词搜索过滤 | 212 | //谓词搜索过滤 |
153 | func updateSearchResults(for searchController: UISearchController) { | 213 | func updateSearchResults(for searchController: UISearchController) { |
154 | - let searchString=searchController.searchBar.text | ||
155 | - let predicate=NSPredicate(format: "SELF CONTAINS[c] %@", searchString!) | ||
156 | - searchAry=(dataSetAry as NSArray).filtered(using: predicate) as! [String] | ||
157 | - if CGFloat((searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
158 | - searchTableHeight.constant=getScreenHeight()-64 | ||
159 | - }else{ | ||
160 | - searchTableHeight.constant=CGFloat((searchAry.count+1)*44) | ||
161 | - } | ||
162 | - searchTableView.reloadData() | 214 | +// let searchString=searchController.searchBar.text |
215 | +// let predicate=NSPredicate(format: "SELF CONTAINS[c] %@", searchString!) | ||
216 | +// searchAry=(dataSetAry as NSArray).filtered(using: predicate) as! [String] | ||
217 | +// if CGFloat((searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
218 | +// searchTableHeight.constant=getScreenHeight()-64 | ||
219 | +// }else{ | ||
220 | +// searchTableHeight.constant=CGFloat((searchAry.count+1)*44) | ||
221 | +// } | ||
222 | +// searchTableView.reloadData() | ||
163 | } | 223 | } |
164 | 224 | ||
165 | } | 225 | } |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterListViewController.swift
0 → 100644
@@ -0,0 +1,205 @@ | @@ -0,0 +1,205 @@ | ||
1 | +// | ||
2 | +// FilterListViewController.swift | ||
3 | +// YouerLiveVideo | ||
4 | +// | ||
5 | +// Created by 葛建军 on 17/5/24. | ||
6 | +// Copyright © 2017年 左丞. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class FilterListViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { | ||
12 | + var index:Int=0 | ||
13 | + var superVC:FilterViewController! | ||
14 | + var dataSet:[filterListModel]=[] | ||
15 | + var currentItem:filterListModel? //记录当前页面是否可以返回 | ||
16 | + var selectItem:filterListModel? //记录选中的目录 | ||
17 | + @IBOutlet var tableView: UITableView! | ||
18 | + override func viewDidLoad() { | ||
19 | + super.viewDidLoad() | ||
20 | + getContentWithIndex() | ||
21 | + } | ||
22 | + func getContentWithIndex(){ | ||
23 | + switch index { | ||
24 | + case 0: | ||
25 | + AppDelegate.instance().httpServer.getWaveCatagory(parameters: ["waveId":superVC.type.materials as AnyObject]) { (str, error) in | ||
26 | + if error==nil { | ||
27 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | ||
28 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | ||
29 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
30 | + self.dataSet.append(filterListModel(j: item)) | ||
31 | + } | ||
32 | + self.currentItem=filterListModel(array: self.dataSet) | ||
33 | + self.tableView.reloadData() | ||
34 | + }, failHandler: { (error) in | ||
35 | + self.view.makeToast("获取教材目录失败:\(error.localizedDescription)") | ||
36 | + }) | ||
37 | + }else{ | ||
38 | + self.view.makeToast("获取教材目录失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | ||
39 | + } | ||
40 | + }else{ | ||
41 | + self.view.makeToast("获取教材目录失败:\(error!.description)") | ||
42 | + } | ||
43 | + } | ||
44 | + case 1: | ||
45 | + AppDelegate.instance().httpServer.getTopicCatagory(parameters: ["waveId":superVC.type.materials as AnyObject]) { (str, error) in | ||
46 | + if error==nil { | ||
47 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | ||
48 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | ||
49 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
50 | + self.dataSet.append(filterListModel(j: item)) | ||
51 | + } | ||
52 | + }, failHandler: { (error) in | ||
53 | + self.view.makeToast("获取知识点目录失败:\(error.localizedDescription)") | ||
54 | + }) | ||
55 | + }else{ | ||
56 | + self.view.makeToast("获取知识点目录失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | ||
57 | + } | ||
58 | + }else{ | ||
59 | + self.view.makeToast("获取知识点目录失败:\(error!.description)") | ||
60 | + } | ||
61 | + } | ||
62 | + case 2: | ||
63 | + AppDelegate.instance().httpServer.getTestCatagory(parameters: ["waveId":superVC.type.materials as AnyObject]) { (str, error) in | ||
64 | + if error==nil { | ||
65 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | ||
66 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | ||
67 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
68 | + self.dataSet.append(filterListModel(j: item)) | ||
69 | + } | ||
70 | + }, failHandler: { (error) in | ||
71 | + self.view.makeToast("获取考点目录失败:\(error.localizedDescription)") | ||
72 | + }) | ||
73 | + }else{ | ||
74 | + self.view.makeToast("获取考点目录失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | ||
75 | + } | ||
76 | + }else{ | ||
77 | + self.view.makeToast("获取考点目录失败:\(error!.description)") | ||
78 | + } | ||
79 | + } | ||
80 | + default: | ||
81 | + break | ||
82 | + } | ||
83 | + | ||
84 | + } | ||
85 | + //MARK: - 返回和确定按钮 | ||
86 | + @IBAction func backAction(_ sender: UIBarButtonItem) { | ||
87 | + if currentItem != nil { | ||
88 | + if currentItem?.parentModel != nil { | ||
89 | + //返回到上级界面 | ||
90 | + self.dataSet=currentItem!.parentModel!.children | ||
91 | + self.tableView.reloadData() | ||
92 | + currentItem=currentItem!.parentModel | ||
93 | + if selectItem != nil { | ||
94 | + selectItem=nil | ||
95 | + } | ||
96 | + }else{ | ||
97 | + self.navigationController!.popViewController(animated: true) | ||
98 | + } | ||
99 | + } | ||
100 | + } | ||
101 | + @IBAction func onDoneAction(_ sender: UIBarButtonItem) { | ||
102 | + if selectItem==nil { | ||
103 | + self.view.makeToast("请选择目录") | ||
104 | + }else{ | ||
105 | + //发送通知 | ||
106 | + var nameID:String="" | ||
107 | + switch index { | ||
108 | + case 0: | ||
109 | + nameID="chapterId" | ||
110 | + case 1: | ||
111 | + nameID="topicId" | ||
112 | + case 2: | ||
113 | + nameID="testId" | ||
114 | + default: | ||
115 | + nameID="chapterId" | ||
116 | + } | ||
117 | + NotificationCenter.default.post(name: NSNotification.Name(rawValue: "FilterReloadTableView"), object: ["type":superVC.type.type as AnyObject, | ||
118 | + "subjectId":superVC.type.subject as AnyObject, | ||
119 | + "schooltypeId":superVC.type.schoolSection as AnyObject, | ||
120 | + "gradeId":superVC.type.grade as AnyObject, | ||
121 | + "courseWaveId":superVC.type.materials as AnyObject, | ||
122 | + nameID:selectItem!.id as AnyObject, | ||
123 | + "orderby":1 as AnyObject, | ||
124 | + "pageIndex":1 as AnyObject, | ||
125 | + "pageSize":10 as AnyObject]) | ||
126 | + self.navigationController?.dismiss(animated: true, completion: nil) | ||
127 | + } | ||
128 | + } | ||
129 | + | ||
130 | + //MARK: - UITableViewDelegate,UITableViewDataSource | ||
131 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
132 | + return dataSet.count | ||
133 | + } | ||
134 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
135 | + let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FilterListViewCell | ||
136 | + let item=dataSet[indexPath.row] | ||
137 | + cell.item=item | ||
138 | + cell.superVC=self | ||
139 | + cell.nameLabel.text=item.name | ||
140 | + if selectItem != nil { | ||
141 | + if item==selectItem { | ||
142 | + cell.selectBtn.setImage(UIImage(named: "resource_select"), for: UIControlState.normal) | ||
143 | + }else{ | ||
144 | + cell.selectBtn.setImage(UIImage(named: "resource_diselect"), for: UIControlState.normal) | ||
145 | + } | ||
146 | + }else{ | ||
147 | + cell.selectBtn.setImage(UIImage(named: "resource_diselect"), for: UIControlState.normal) | ||
148 | + } | ||
149 | + return cell | ||
150 | + } | ||
151 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
152 | + let item=dataSet[indexPath.row] | ||
153 | + if item.children.count>0{ | ||
154 | + self.currentItem=item | ||
155 | + self.dataSet=item.children | ||
156 | + self.tableView.reloadData() | ||
157 | + } | ||
158 | + } | ||
159 | + override func didReceiveMemoryWarning() { | ||
160 | + super.didReceiveMemoryWarning() | ||
161 | + } | ||
162 | +} | ||
163 | +class filterListModel:NSObject{ | ||
164 | + var parentModel:filterListModel? | ||
165 | + var id:String="" | ||
166 | + var name:String="" | ||
167 | + var text:String="" | ||
168 | + var open:Bool=true | ||
169 | + var children:[filterListModel]=[] | ||
170 | + init(j:JSON) { | ||
171 | + super.init() | ||
172 | + id=j["id"].stringValue | ||
173 | + name=j["name"].stringValue | ||
174 | + text=j["text"].stringValue | ||
175 | + open=j["open"].boolValue | ||
176 | + for item in j["children"].arrayValue { | ||
177 | + let model=filterListModel(j: item) | ||
178 | + model.parentModel=self | ||
179 | + children.append(model) | ||
180 | + } | ||
181 | + } | ||
182 | + init(array:[filterListModel]) { | ||
183 | + super.init() | ||
184 | + for item in array { | ||
185 | + item.parentModel=self | ||
186 | + children.append(item) | ||
187 | + } | ||
188 | + } | ||
189 | +} | ||
190 | +class FilterListViewCell: UITableViewCell { | ||
191 | + @IBOutlet var nameLabel: UILabel! | ||
192 | + @IBOutlet var selectBtn: UIButton! | ||
193 | + var superVC:FilterListViewController! | ||
194 | + var item:filterListModel! | ||
195 | + @IBAction func changeSelectAction(_ sender: UIButton) { | ||
196 | + if superVC.selectItem==item { | ||
197 | + superVC.selectItem=nil | ||
198 | + }else{ | ||
199 | + superVC.selectItem=item | ||
200 | + } | ||
201 | + superVC.tableView.reloadData() | ||
202 | + } | ||
203 | + | ||
204 | + | ||
205 | +} |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift
@@ -14,14 +14,12 @@ class FilterViewController: UIViewController,FilterViewDelegate { | @@ -14,14 +14,12 @@ class FilterViewController: UIViewController,FilterViewDelegate { | ||
14 | var dataGrade:[Grade]=[] | 14 | var dataGrade:[Grade]=[] |
15 | var dataSubject:[Subject]=[] | 15 | var dataSubject:[Subject]=[] |
16 | var dataMaterials:[Material]=[] | 16 | var dataMaterials:[Material]=[] |
17 | - var type=FilterParameter() | 17 | + var type:FilterParameter! |
18 | override func viewDidLoad() { | 18 | override func viewDidLoad() { |
19 | super.viewDidLoad() | 19 | super.viewDidLoad() |
20 | self.configTheme() | 20 | self.configTheme() |
21 | self.navigationItem.title="筛选" | 21 | self.navigationItem.title="筛选" |
22 | getSchoolSection() | 22 | getSchoolSection() |
23 | -// NotificationCenter.default.addObserver(self, selector: #selector(RegisterVC.keyboardWIllChange), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil) | ||
24 | -// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "loginOutSuccess"), object: nil) | ||
25 | } | 23 | } |
26 | 24 | ||
27 | @IBAction func dismissAction(_ sender: UIBarButtonItem) { | 25 | @IBAction func dismissAction(_ sender: UIBarButtonItem) { |
@@ -117,6 +115,11 @@ class FilterViewController: UIViewController,FilterViewDelegate { | @@ -117,6 +115,11 @@ class FilterViewController: UIViewController,FilterViewDelegate { | ||
117 | self.getGradeWithSchoolSectionID(id: self.dataSchoolSection[0].f_Id, index: 2) | 115 | self.getGradeWithSchoolSectionID(id: self.dataSchoolSection[0].f_Id, index: 2) |
118 | } | 116 | } |
119 | self.getSubjects(index: 3) | 117 | self.getSubjects(index: 3) |
118 | + let filterFootView=Bundle.main.loadNibNamed("FilterFootView", owner: nil, options: nil)![0] as! FilterFootView | ||
119 | + self.scrollContentView.addArrangedSubview(filterFootView) | ||
120 | + filterFootView.superVC=self | ||
121 | + filterFootView.translatesAutoresizingMaskIntoConstraints=false | ||
122 | + filterFootView.addConstraint(NSLayoutConstraint(item: filterFootView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 50)) | ||
120 | } | 123 | } |
121 | } | 124 | } |
122 | func selectCurrentCount(index: Int,tag:Int) { | 125 | func selectCurrentCount(index: Int,tag:Int) { |
@@ -234,18 +237,15 @@ class FilterViewController: UIViewController,FilterViewDelegate { | @@ -234,18 +237,15 @@ class FilterViewController: UIViewController,FilterViewDelegate { | ||
234 | override func didReceiveMemoryWarning() { | 237 | override func didReceiveMemoryWarning() { |
235 | super.didReceiveMemoryWarning() | 238 | super.didReceiveMemoryWarning() |
236 | } | 239 | } |
237 | - // MARK: - 销毁通知 | ||
238 | - deinit { | ||
239 | - NotificationCenter.default.removeObserver(self) | ||
240 | - } | ||
241 | } | 240 | } |
242 | class FilterParameter:NSObject { | 241 | class FilterParameter:NSObject { |
243 | var schoolSection:String? //学段 | 242 | var schoolSection:String? //学段 |
244 | var grade:String? //年级 | 243 | var grade:String? //年级 |
245 | var subject:String? //学科 | 244 | var subject:String? //学科 |
246 | var materials:String? //教材 | 245 | var materials:String? //教材 |
247 | - override init() { | ||
248 | - | 246 | + var type:Int=0 //0-微课,1-课件(资源),2-电视台 , |
247 | + init(type:Int) { | ||
248 | + self.type=type | ||
249 | } | 249 | } |
250 | } | 250 | } |
251 | class filterModel:NSObject{ | 251 | class filterModel:NSObject{ |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/Resource.storyboard
@@ -6,6 +6,7 @@ | @@ -6,6 +6,7 @@ | ||
6 | <dependencies> | 6 | <dependencies> |
7 | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/> | 7 | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/> |
8 | <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> | 8 | <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> |
9 | + <capability name="Constraints to layout margins" minToolsVersion="6.0"/> | ||
9 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | 10 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
10 | </dependencies> | 11 | </dependencies> |
11 | <scenes> | 12 | <scenes> |
@@ -77,7 +78,105 @@ | @@ -77,7 +78,105 @@ | ||
77 | </viewController> | 78 | </viewController> |
78 | <placeholder placeholderIdentifier="IBFirstResponder" id="ocM-s7-Wga" userLabel="First Responder" sceneMemberID="firstResponder"/> | 79 | <placeholder placeholderIdentifier="IBFirstResponder" id="ocM-s7-Wga" userLabel="First Responder" sceneMemberID="firstResponder"/> |
79 | </objects> | 80 | </objects> |
80 | - <point key="canvasLocation" x="-738.39999999999998" y="265.81709145427288"/> | 81 | + <point key="canvasLocation" x="-1231" y="266"/> |
82 | + </scene> | ||
83 | + <!--Title--> | ||
84 | + <scene sceneID="KE0-Ec-6BR"> | ||
85 | + <objects> | ||
86 | + <viewController storyboardIdentifier="FilterListViewController" automaticallyAdjustsScrollViewInsets="NO" id="zHt-CL-DCL" customClass="FilterListViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController"> | ||
87 | + <layoutGuides> | ||
88 | + <viewControllerLayoutGuide type="top" id="LdG-FX-62I"/> | ||
89 | + <viewControllerLayoutGuide type="bottom" id="VWt-bS-YTo"/> | ||
90 | + </layoutGuides> | ||
91 | + <view key="view" contentMode="scaleToFill" id="zL1-KT-WjN"> | ||
92 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
93 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
94 | + <subviews> | ||
95 | + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="0mu-k5-awJ"> | ||
96 | + <rect key="frame" x="0.0" y="64" width="375" height="603"/> | ||
97 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
98 | + <view key="tableFooterView" contentMode="scaleToFill" id="Abq-Z2-9eV"> | ||
99 | + <rect key="frame" x="0.0" y="72" width="375" height="1"/> | ||
100 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
101 | + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> | ||
102 | + </view> | ||
103 | + <prototypes> | ||
104 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="UVN-8r-w7w" customClass="FilterListViewCell" customModule="YouerLiveVideo" customModuleProvider="target"> | ||
105 | + <rect key="frame" x="0.0" y="28" width="375" height="44"/> | ||
106 | + <autoresizingMask key="autoresizingMask"/> | ||
107 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UVN-8r-w7w" id="9FT-AK-CvV"> | ||
108 | + <rect key="frame" x="0.0" y="0.0" width="375" height="43"/> | ||
109 | + <autoresizingMask key="autoresizingMask"/> | ||
110 | + <subviews> | ||
111 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="liq-eO-Kb6"> | ||
112 | + <rect key="frame" x="8" y="12.5" width="331" height="18"/> | ||
113 | + <constraints> | ||
114 | + <constraint firstAttribute="width" constant="331" id="pSj-w8-k8O"/> | ||
115 | + </constraints> | ||
116 | + <fontDescription key="fontDescription" type="system" pointSize="15"/> | ||
117 | + <nil key="textColor"/> | ||
118 | + <nil key="highlightedColor"/> | ||
119 | + </label> | ||
120 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Dl9-Wp-RkY"> | ||
121 | + <rect key="frame" x="347" y="12" width="20" height="20"/> | ||
122 | + <constraints> | ||
123 | + <constraint firstAttribute="width" constant="20" id="o5u-gy-UtC"/> | ||
124 | + <constraint firstAttribute="height" constant="20" id="wd6-fW-NOJ"/> | ||
125 | + </constraints> | ||
126 | + <state key="normal" image="resource_diselect"/> | ||
127 | + <connections> | ||
128 | + <action selector="changeSelectAction:" destination="UVN-8r-w7w" eventType="touchUpInside" id="A7s-9g-mY3"/> | ||
129 | + </connections> | ||
130 | + </button> | ||
131 | + </subviews> | ||
132 | + <constraints> | ||
133 | + <constraint firstAttribute="leadingMargin" secondItem="liq-eO-Kb6" secondAttribute="leading" id="L2j-lu-pe4"/> | ||
134 | + <constraint firstItem="liq-eO-Kb6" firstAttribute="centerY" secondItem="9FT-AK-CvV" secondAttribute="centerY" id="Uo5-5W-S6e"/> | ||
135 | + <constraint firstItem="Dl9-Wp-RkY" firstAttribute="centerY" secondItem="9FT-AK-CvV" secondAttribute="centerY" id="lwC-V7-fgU"/> | ||
136 | + <constraint firstItem="Dl9-Wp-RkY" firstAttribute="leading" secondItem="liq-eO-Kb6" secondAttribute="trailing" constant="8" id="pMu-Vd-32m"/> | ||
137 | + <constraint firstAttribute="trailingMargin" secondItem="Dl9-Wp-RkY" secondAttribute="trailing" id="vaR-5v-dX9"/> | ||
138 | + </constraints> | ||
139 | + </tableViewCellContentView> | ||
140 | + <connections> | ||
141 | + <outlet property="nameLabel" destination="liq-eO-Kb6" id="tdf-ix-PPl"/> | ||
142 | + <outlet property="selectBtn" destination="Dl9-Wp-RkY" id="nmx-nz-3yj"/> | ||
143 | + </connections> | ||
144 | + </tableViewCell> | ||
145 | + </prototypes> | ||
146 | + <connections> | ||
147 | + <outlet property="dataSource" destination="zHt-CL-DCL" id="kiJ-ze-WHW"/> | ||
148 | + <outlet property="delegate" destination="zHt-CL-DCL" id="QJr-Fr-9WG"/> | ||
149 | + </connections> | ||
150 | + </tableView> | ||
151 | + </subviews> | ||
152 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | ||
153 | + <constraints> | ||
154 | + <constraint firstAttribute="trailing" secondItem="0mu-k5-awJ" secondAttribute="trailing" id="3Sp-No-f5O"/> | ||
155 | + <constraint firstItem="0mu-k5-awJ" firstAttribute="top" secondItem="LdG-FX-62I" secondAttribute="bottom" id="CY4-QV-B2L"/> | ||
156 | + <constraint firstItem="VWt-bS-YTo" firstAttribute="top" secondItem="0mu-k5-awJ" secondAttribute="bottom" id="GUd-E0-zu2"/> | ||
157 | + <constraint firstItem="0mu-k5-awJ" firstAttribute="leading" secondItem="zL1-KT-WjN" secondAttribute="leading" id="P69-w1-xvo"/> | ||
158 | + </constraints> | ||
159 | + </view> | ||
160 | + <navigationItem key="navigationItem" title="Title" id="Xi4-Cc-4Ao"> | ||
161 | + <barButtonItem key="leftBarButtonItem" image="icon_back" id="TNR-MX-Haz"> | ||
162 | + <connections> | ||
163 | + <action selector="backAction:" destination="zHt-CL-DCL" id="CeC-PY-JdX"/> | ||
164 | + </connections> | ||
165 | + </barButtonItem> | ||
166 | + <barButtonItem key="rightBarButtonItem" title="确定" id="H1P-q9-ZPp"> | ||
167 | + <connections> | ||
168 | + <action selector="onDoneAction:" destination="zHt-CL-DCL" id="NnE-RV-tBW"/> | ||
169 | + </connections> | ||
170 | + </barButtonItem> | ||
171 | + </navigationItem> | ||
172 | + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/> | ||
173 | + <connections> | ||
174 | + <outlet property="tableView" destination="0mu-k5-awJ" id="nrq-Fk-c3q"/> | ||
175 | + </connections> | ||
176 | + </viewController> | ||
177 | + <placeholder placeholderIdentifier="IBFirstResponder" id="jgm-JW-7AL" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
178 | + </objects> | ||
179 | + <point key="canvasLocation" x="-600.79999999999995" y="265.81709145427288"/> | ||
81 | </scene> | 180 | </scene> |
82 | <!--Live Infor View Controller--> | 181 | <!--Live Infor View Controller--> |
83 | <scene sceneID="QrF-a4-VNS"> | 182 | <scene sceneID="QrF-a4-VNS"> |
@@ -372,6 +471,8 @@ | @@ -372,6 +471,8 @@ | ||
372 | <resources> | 471 | <resources> |
373 | <image name="closeAlive" width="33" height="33"/> | 472 | <image name="closeAlive" width="33" height="33"/> |
374 | <image name="defphoto.png" width="256" height="256"/> | 473 | <image name="defphoto.png" width="256" height="256"/> |
474 | + <image name="icon_back" width="12" height="21"/> | ||
475 | + <image name="resource_diselect" width="24" height="24"/> | ||
375 | <image name="screen_full" width="33" height="33"/> | 476 | <image name="screen_full" width="33" height="33"/> |
376 | <image name="starLive" width="22" height="22"/> | 477 | <image name="starLive" width="22" height="22"/> |
377 | </resources> | 478 | </resources> |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | 8 | ||
9 | import UIKit | 9 | import UIKit |
10 | 10 | ||
11 | -class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UISearchResultsUpdating { | 11 | +class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UISearchResultsUpdating,UISearchBarDelegate { |
12 | @IBOutlet var tableView: UITableView! | 12 | @IBOutlet var tableView: UITableView! |
13 | 13 | ||
14 | @IBOutlet var grayView: UIView! | 14 | @IBOutlet var grayView: UIView! |
@@ -17,9 +17,10 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -17,9 +17,10 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
17 | 17 | ||
18 | var searchController:UISearchController! | 18 | var searchController:UISearchController! |
19 | var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] | 19 | var dataSetAry:[String]=["葛建军","张道峰","徐晓杰","左承","段合江"] |
20 | - var searchAry:[String]=[] | 20 | + var searchAry:[MicroCourseModel]=[] |
21 | var currentPage:Int=1 //当前页数,每次取十个数据 | 21 | var currentPage:Int=1 //当前页数,每次取十个数据 |
22 | var resourceData:[MicroCourseModel]=[] | 22 | var resourceData:[MicroCourseModel]=[] |
23 | + var parameter:Dictionary<String,AnyObject>? | ||
23 | override func viewDidLoad() { | 24 | override func viewDidLoad() { |
24 | super.viewDidLoad() | 25 | super.viewDidLoad() |
25 | self.configTheme() | 26 | self.configTheme() |
@@ -30,11 +31,28 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -30,11 +31,28 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
30 | self.tableView.reloadData() | 31 | self.tableView.reloadData() |
31 | } | 32 | } |
32 | }) | 33 | }) |
34 | + NotificationCenter.default.addObserver(self, selector: #selector(ResourceViewController.reloadTableView), name: NSNotification.Name(rawValue: "FilterReloadTableView"), object: nil) | ||
35 | + | ||
36 | + } | ||
37 | + //筛选结束后刷新界面 | ||
38 | + func reloadTableView(noti:Notification){ | ||
39 | + let parameters=(noti.object as! Dictionary<String,AnyObject>) | ||
40 | + if parameters["type"]?.int8Value==1{ | ||
41 | + parameter=parameters | ||
42 | + currentPage=1 | ||
43 | + resourceData.removeAll() | ||
44 | + refreshLivesAction(parameters: parameters, completionHandler: { (success) in | ||
45 | + if success{ | ||
46 | + self.tableView.reloadData() | ||
47 | + } | ||
48 | + }) | ||
49 | + } | ||
33 | } | 50 | } |
34 | func addSearchController(){ | 51 | func addSearchController(){ |
35 | self.definesPresentationContext=true | 52 | self.definesPresentationContext=true |
36 | searchController=UISearchController(searchResultsController: nil) | 53 | searchController=UISearchController(searchResultsController: nil) |
37 | searchController.delegate=self | 54 | searchController.delegate=self |
55 | + searchController.searchBar.delegate=self | ||
38 | searchController.searchResultsUpdater=self | 56 | searchController.searchResultsUpdater=self |
39 | searchController.searchBar.barTintColor=UIColor.groupTableViewBackground | 57 | searchController.searchBar.barTintColor=UIColor.groupTableViewBackground |
40 | searchController.searchBar.placeholder="搜索" | 58 | searchController.searchBar.placeholder="搜索" |
@@ -55,7 +73,11 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -55,7 +73,11 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
55 | //下拉刷新 | 73 | //下拉刷新 |
56 | self.currentPage=1 | 74 | self.currentPage=1 |
57 | self.resourceData.removeAll() | 75 | self.resourceData.removeAll() |
58 | - self.refreshLivesAction(parameters: ["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | 76 | + var p:Dictionary<String,AnyObject>=["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject] |
77 | + if self.parameter != nil { | ||
78 | + p=self.parameter! | ||
79 | + } | ||
80 | + self.refreshLivesAction(parameters: p, completionHandler: { (success) in | ||
59 | if success{ | 81 | if success{ |
60 | self.tableView.reloadData() | 82 | self.tableView.reloadData() |
61 | } | 83 | } |
@@ -66,7 +88,11 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -66,7 +88,11 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
66 | tableView.mj_header=header | 88 | tableView.mj_header=header |
67 | tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { | 89 | tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: { |
68 | //上拉加载更多 | 90 | //上拉加载更多 |
69 | - self.refreshLivesAction(parameters: ["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | 91 | + var p:Dictionary<String,AnyObject>=["type":1 as AnyObject,"orderby":1 as AnyObject,"pageIndex":self.currentPage as AnyObject,"pageSize":10 as AnyObject] |
92 | + if self.parameter != nil { | ||
93 | + p=self.parameter! | ||
94 | + } | ||
95 | + self.refreshLivesAction(parameters: p, completionHandler: { (success) in | ||
70 | if success{ | 96 | if success{ |
71 | self.tableView.reloadData() | 97 | self.tableView.reloadData() |
72 | } | 98 | } |
@@ -75,17 +101,23 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -75,17 +101,23 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
75 | }) | 101 | }) |
76 | } | 102 | } |
77 | // MARK: - 刷新数据接口 | 103 | // MARK: - 刷新数据接口 |
78 | - func refreshLivesAction(parameters:Dictionary<String,AnyObject>,completionHandler:@escaping (Bool) -> ()){ | 104 | + func refreshLivesAction(isSearch:Bool=false,parameters:Dictionary<String,AnyObject>,completionHandler:@escaping (Bool) -> ()){ |
79 | AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in | 105 | AppDelegate.instance().httpServer.postResourceList(parameters: parameters) { (str, error) in |
80 | var success:Bool=true | 106 | var success:Bool=true |
81 | if error==nil { | 107 | if error==nil { |
82 | if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | 108 | if JSON.fromString(jsonString: str)!["status"].intValue == 1{ |
83 | httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | 109 | httpJsonResule(jsonString: str, error: error, successHandler: { (json) in |
84 | - if JSON.fromString(jsonString: str)!["data"].arrayValue.count>0{ | ||
85 | - self.currentPage+=1 | ||
86 | - } | ||
87 | - for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
88 | - self.resourceData.append(MicroCourseModel(j: item)) | 110 | + if isSearch{ |
111 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
112 | + self.searchAry.append(MicroCourseModel(j: item)) | ||
113 | + } | ||
114 | + }else{ | ||
115 | + if JSON.fromString(jsonString: str)!["data"].arrayValue.count>0{ | ||
116 | + self.currentPage+=1 | ||
117 | + } | ||
118 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | ||
119 | + self.resourceData.append(MicroCourseModel(j: item)) | ||
120 | + } | ||
89 | } | 121 | } |
90 | success=true | 122 | success=true |
91 | }, failHandler: { (error) in | 123 | }, failHandler: { (error) in |
@@ -106,6 +138,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -106,6 +138,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
106 | // MARK: - 跳转到筛选 | 138 | // MARK: - 跳转到筛选 |
107 | @IBAction func jumpFilterVCAction(_ sender: UIButton) { | 139 | @IBAction func jumpFilterVCAction(_ sender: UIButton) { |
108 | let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController | 140 | let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController |
141 | + vc.type=FilterParameter(type: 1) | ||
109 | self.present(vc.wrapWithNavigationController(), animated: true, completion: nil) | 142 | self.present(vc.wrapWithNavigationController(), animated: true, completion: nil) |
110 | } | 143 | } |
111 | 144 | ||
@@ -119,7 +152,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -119,7 +152,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
119 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | 152 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
120 | if tableView==searchTableView { | 153 | if tableView==searchTableView { |
121 | let cell=tableView.dequeueReusableCell(withIdentifier: "cell") | 154 | let cell=tableView.dequeueReusableCell(withIdentifier: "cell") |
122 | - cell?.textLabel?.text=searchAry[indexPath.row] | 155 | + cell?.textLabel?.text=searchAry[indexPath.row].f_Title |
123 | return cell! | 156 | return cell! |
124 | }else{ | 157 | }else{ |
125 | let cell=tableView.dequeueReusableCell(withIdentifier: "identifier") as! ResourceViewControllerTableViewCell | 158 | let cell=tableView.dequeueReusableCell(withIdentifier: "identifier") as! ResourceViewControllerTableViewCell |
@@ -137,6 +170,9 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -137,6 +170,9 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
137 | } | 170 | } |
138 | //取消键盘输入状态 | 171 | //取消键盘输入状态 |
139 | @IBAction func cancleSearchActivit(_ sender: UITapGestureRecognizer) { | 172 | @IBAction func cancleSearchActivit(_ sender: UITapGestureRecognizer) { |
173 | + self.searchAry.removeAll() | ||
174 | + searchTableHeight.constant=44 | ||
175 | + self.searchTableView.reloadData() | ||
140 | searchController.isActive=false | 176 | searchController.isActive=false |
141 | } | 177 | } |
142 | func willPresentSearchController(_ searchController: UISearchController) { | 178 | func willPresentSearchController(_ searchController: UISearchController) { |
@@ -146,19 +182,41 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | @@ -146,19 +182,41 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa | ||
146 | searchTableHeight.constant=44 | 182 | searchTableHeight.constant=44 |
147 | grayView.isHidden=true | 183 | grayView.isHidden=true |
148 | } | 184 | } |
185 | + //searchaBarDelegate | ||
186 | + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { | ||
187 | + refreshLivesAction(isSearch: true,parameters: ["type":0 as AnyObject,"orderby":1 as AnyObject,"pageIndex":1 as AnyObject,"keyword":searchBar.text as AnyObject,"pageSize":10 as AnyObject], completionHandler: { (success) in | ||
188 | + if success{ | ||
189 | + if CGFloat((self.searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
190 | + self.searchTableHeight.constant=getScreenHeight()-64 | ||
191 | + }else{ | ||
192 | + self.searchTableHeight.constant=CGFloat((self.searchAry.count+1)*44) | ||
193 | + } | ||
194 | + self.searchTableView.reloadData() | ||
195 | + } | ||
196 | + }) | ||
197 | + } | ||
198 | + func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { | ||
199 | + self.searchAry.removeAll() | ||
200 | + searchTableHeight.constant=44 | ||
201 | + self.searchTableView.reloadData() | ||
202 | + searchController.isActive=false | ||
203 | + } | ||
149 | //谓词搜索过滤 | 204 | //谓词搜索过滤 |
150 | func updateSearchResults(for searchController: UISearchController) { | 205 | func updateSearchResults(for searchController: UISearchController) { |
151 | - let searchString=searchController.searchBar.text | ||
152 | - let predicate=NSPredicate(format: "SELF CONTAINS[c] %@", searchString!) | ||
153 | - searchAry=(dataSetAry as NSArray).filtered(using: predicate) as! [String] | ||
154 | - if CGFloat((searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
155 | - searchTableHeight.constant=getScreenHeight()-64 | ||
156 | - }else{ | ||
157 | - searchTableHeight.constant=CGFloat((searchAry.count+1)*44) | ||
158 | - } | ||
159 | - searchTableView.reloadData() | 206 | +// let searchString=searchController.searchBar.text |
207 | +// let predicate=NSPredicate(format: "SELF CONTAINS[c] %@", searchString!) | ||
208 | +// searchAry=(dataSetAry as NSArray).filtered(using: predicate) as! [String] | ||
209 | +// if CGFloat((searchAry.count+1)*44)>(getScreenHeight()-64){ | ||
210 | +// searchTableHeight.constant=getScreenHeight()-64 | ||
211 | +// }else{ | ||
212 | +// searchTableHeight.constant=CGFloat((searchAry.count+1)*44) | ||
213 | +// } | ||
214 | +// searchTableView.reloadData() | ||
215 | + } | ||
216 | + // MARK: - 销毁通知 | ||
217 | + deinit { | ||
218 | + NotificationCenter.default.removeObserver(self) | ||
160 | } | 219 | } |
161 | - | ||
162 | } | 220 | } |
163 | 221 | ||
164 | 222 |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterFootView.swift
0 → 100644
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +// | ||
2 | +// FilterFootView.swift | ||
3 | +// YouerLiveVideo | ||
4 | +// | ||
5 | +// Created by 葛建军 on 17/5/24. | ||
6 | +// Copyright © 2017年 左丞. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class FilterFootView: UIView { | ||
12 | + var superVC:FilterViewController! | ||
13 | + var array:[String]=["教材目录","知识点目录","考点目录"] | ||
14 | + @IBAction func pushListAction(_ sender: UIButton) { | ||
15 | + if superVC.type.schoolSection != nil && superVC.type.materials != nil && superVC.type.grade != nil && superVC.type.subject != nil{ | ||
16 | + let vc=UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "FilterListViewController") as! FilterListViewController | ||
17 | + vc.superVC=superVC | ||
18 | + vc.title=array[sender.tag] | ||
19 | + vc.index=sender.tag | ||
20 | + superVC.navigationController?.pushViewController(vc, animated: true) | ||
21 | + }else{ | ||
22 | + superVC.view.makeToast("以上筛选条件都必选") | ||
23 | + } | ||
24 | + } | ||
25 | +} |
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterFootView.xib
0 → 100644
@@ -0,0 +1,65 @@ | @@ -0,0 +1,65 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | ||
3 | + <device id="retina4_7" orientation="portrait"> | ||
4 | + <adaptation id="fullscreen"/> | ||
5 | + </device> | ||
6 | + <dependencies> | ||
7 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/> | ||
8 | + <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> | ||
9 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
10 | + </dependencies> | ||
11 | + <objects> | ||
12 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
13 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
14 | + <view contentMode="scaleToFill" restorationIdentifier="FilterFootView" id="iN0-l3-epB" customClass="FilterFootView" customModule="YouerLiveVideo" customModuleProvider="target"> | ||
15 | + <rect key="frame" x="0.0" y="0.0" width="431" height="74"/> | ||
16 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
17 | + <subviews> | ||
18 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qkY-Fg-R07"> | ||
19 | + <rect key="frame" x="0.0" y="0.0" width="143.5" height="74"/> | ||
20 | + <state key="normal" title="教材目录"> | ||
21 | + <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> | ||
22 | + </state> | ||
23 | + <connections> | ||
24 | + <action selector="pushListAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="pw6-rP-H1d"/> | ||
25 | + </connections> | ||
26 | + </button> | ||
27 | + <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9IP-30-ds0"> | ||
28 | + <rect key="frame" x="144" y="0.0" width="143" height="74"/> | ||
29 | + <state key="normal" title="知识点目录"> | ||
30 | + <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> | ||
31 | + </state> | ||
32 | + <connections> | ||
33 | + <action selector="pushListAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Gge-fr-oCB"/> | ||
34 | + </connections> | ||
35 | + </button> | ||
36 | + <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hSs-Ue-9q5"> | ||
37 | + <rect key="frame" x="287.5" y="0.0" width="143.5" height="74"/> | ||
38 | + <state key="normal" title="考点目录"> | ||
39 | + <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> | ||
40 | + </state> | ||
41 | + <connections> | ||
42 | + <action selector="pushListAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="FMb-2J-e1r"/> | ||
43 | + </connections> | ||
44 | + </button> | ||
45 | + </subviews> | ||
46 | + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
47 | + <constraints> | ||
48 | + <constraint firstItem="hSs-Ue-9q5" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" multiplier="1:3" id="3ep-1I-NMw"/> | ||
49 | + <constraint firstItem="qkY-Fg-R07" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="4MM-T2-3um"/> | ||
50 | + <constraint firstAttribute="bottom" secondItem="9IP-30-ds0" secondAttribute="bottom" id="5M3-1d-KtT"/> | ||
51 | + <constraint firstItem="hSs-Ue-9q5" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="7KG-n9-ZZJ"/> | ||
52 | + <constraint firstItem="9IP-30-ds0" firstAttribute="leading" secondItem="qkY-Fg-R07" secondAttribute="trailing" id="C6x-TT-ZGB"/> | ||
53 | + <constraint firstAttribute="bottom" secondItem="hSs-Ue-9q5" secondAttribute="bottom" id="CLg-CF-ZXB"/> | ||
54 | + <constraint firstItem="qkY-Fg-R07" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" multiplier="1:3" id="R0D-P1-Z0B"/> | ||
55 | + <constraint firstItem="9IP-30-ds0" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="RVd-2Y-GkH"/> | ||
56 | + <constraint firstAttribute="trailing" secondItem="hSs-Ue-9q5" secondAttribute="trailing" id="TWF-ru-PiJ"/> | ||
57 | + <constraint firstItem="qkY-Fg-R07" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="dPN-9C-qEw"/> | ||
58 | + <constraint firstAttribute="bottom" secondItem="qkY-Fg-R07" secondAttribute="bottom" id="izw-3e-8LX"/> | ||
59 | + <constraint firstItem="hSs-Ue-9q5" firstAttribute="leading" secondItem="9IP-30-ds0" secondAttribute="trailing" id="pqu-rt-gFv"/> | ||
60 | + </constraints> | ||
61 | + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> | ||
62 | + <point key="canvasLocation" x="-26.5" y="-714"/> | ||
63 | + </view> | ||
64 | + </objects> | ||
65 | +</document> |