├── .DS_Store ├── .gitignore ├── LICENSE ├── README.md ├── SUIMVVMDemo ├── .DS_Store ├── Podfile ├── Podfile.lock ├── Pods │ ├── .DS_Store │ ├── AFNetworking │ │ ├── AFNetworking │ │ │ ├── AFHTTPSessionManager.h │ │ │ ├── AFHTTPSessionManager.m │ │ │ ├── AFNetworkReachabilityManager.h │ │ │ ├── AFNetworkReachabilityManager.m │ │ │ ├── AFNetworking.h │ │ │ ├── AFSecurityPolicy.h │ │ │ ├── AFSecurityPolicy.m │ │ │ ├── AFURLRequestSerialization.h │ │ │ ├── AFURLRequestSerialization.m │ │ │ ├── AFURLResponseSerialization.h │ │ │ ├── AFURLResponseSerialization.m │ │ │ ├── AFURLSessionManager.h │ │ │ └── AFURLSessionManager.m │ │ ├── LICENSE │ │ ├── README.md │ │ └── UIKit+AFNetworking │ │ │ ├── AFAutoPurgingImageCache.h │ │ │ ├── AFAutoPurgingImageCache.m │ │ │ ├── AFImageDownloader.h │ │ │ ├── AFImageDownloader.m │ │ │ ├── AFNetworkActivityIndicatorManager.h │ │ │ ├── AFNetworkActivityIndicatorManager.m │ │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ │ ├── UIActivityIndicatorView+AFNetworking.m │ │ │ ├── UIButton+AFNetworking.h │ │ │ ├── UIButton+AFNetworking.m │ │ │ ├── UIImage+AFNetworking.h │ │ │ ├── UIImageView+AFNetworking.h │ │ │ ├── UIImageView+AFNetworking.m │ │ │ ├── UIKit+AFNetworking.h │ │ │ ├── UIProgressView+AFNetworking.h │ │ │ ├── UIProgressView+AFNetworking.m │ │ │ ├── UIRefreshControl+AFNetworking.h │ │ │ ├── UIRefreshControl+AFNetworking.m │ │ │ ├── UIWebView+AFNetworking.h │ │ │ └── UIWebView+AFNetworking.m │ ├── FMDB │ │ ├── LICENSE.txt │ │ ├── README.markdown │ │ └── src │ │ │ └── fmdb │ │ │ ├── FMDB.h │ │ │ ├── FMDatabase.h │ │ │ ├── FMDatabase.m │ │ │ ├── FMDatabaseAdditions.h │ │ │ ├── FMDatabaseAdditions.m │ │ │ ├── FMDatabasePool.h │ │ │ ├── FMDatabasePool.m │ │ │ ├── FMDatabaseQueue.h │ │ │ ├── FMDatabaseQueue.m │ │ │ ├── FMResultSet.h │ │ │ └── FMResultSet.m │ ├── Headers │ │ ├── Private │ │ │ ├── AFNetworking │ │ │ │ ├── AFAutoPurgingImageCache.h │ │ │ │ ├── AFHTTPSessionManager.h │ │ │ │ ├── AFImageDownloader.h │ │ │ │ ├── AFNetworkActivityIndicatorManager.h │ │ │ │ ├── AFNetworkReachabilityManager.h │ │ │ │ ├── AFNetworking.h │ │ │ │ ├── AFSecurityPolicy.h │ │ │ │ ├── AFURLRequestSerialization.h │ │ │ │ ├── AFURLResponseSerialization.h │ │ │ │ ├── AFURLSessionManager.h │ │ │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ │ │ ├── UIButton+AFNetworking.h │ │ │ │ ├── UIImage+AFNetworking.h │ │ │ │ ├── UIImageView+AFNetworking.h │ │ │ │ ├── UIKit+AFNetworking.h │ │ │ │ ├── UIProgressView+AFNetworking.h │ │ │ │ ├── UIRefreshControl+AFNetworking.h │ │ │ │ └── UIWebView+AFNetworking.h │ │ │ ├── FMDB │ │ │ │ ├── FMDB.h │ │ │ │ ├── FMDatabase.h │ │ │ │ ├── FMDatabaseAdditions.h │ │ │ │ ├── FMDatabasePool.h │ │ │ │ ├── FMDatabaseQueue.h │ │ │ │ └── FMResultSet.h │ │ │ ├── MJExtension │ │ │ │ ├── MJExtension.h │ │ │ │ ├── MJExtensionConst.h │ │ │ │ ├── MJFoundation.h │ │ │ │ ├── MJProperty.h │ │ │ │ ├── MJPropertyKey.h │ │ │ │ ├── MJPropertyType.h │ │ │ │ ├── NSObject+MJClass.h │ │ │ │ ├── NSObject+MJCoding.h │ │ │ │ ├── NSObject+MJKeyValue.h │ │ │ │ ├── NSObject+MJProperty.h │ │ │ │ └── NSString+MJExtension.h │ │ │ ├── MJRefresh │ │ │ │ ├── MJRefresh.h │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ ├── MJRefreshComponent.h │ │ │ │ ├── MJRefreshConst.h │ │ │ │ ├── MJRefreshFooter.h │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ ├── UIScrollView+MJExtension.h │ │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ │ └── UIView+MJExtension.h │ │ │ ├── Masonry │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ ├── MASConstraint+Private.h │ │ │ │ ├── MASConstraint.h │ │ │ │ ├── MASConstraintMaker.h │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ ├── MASUtilities.h │ │ │ │ ├── MASViewAttribute.h │ │ │ │ ├── MASViewConstraint.h │ │ │ │ ├── Masonry.h │ │ │ │ ├── NSArray+MASAdditions.h │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ ├── View+MASAdditions.h │ │ │ │ ├── View+MASShorthandAdditions.h │ │ │ │ └── ViewController+MASAdditions.h │ │ │ ├── SUIUtils │ │ │ │ ├── NSArray+SUIAdditions.h │ │ │ │ ├── NSArray+SUISafeAccess.h │ │ │ │ ├── NSData+SUIAdditions.h │ │ │ │ ├── NSDate+SUIAdditions.h │ │ │ │ ├── NSDictionary+SUIAdditions.h │ │ │ │ ├── NSDictionary+SUISafeAccess.h │ │ │ │ ├── NSIndexPath+SUIAdditions.h │ │ │ │ ├── NSNumber+SUIAdditions.h │ │ │ │ ├── NSObject+SUIAdditions.h │ │ │ │ ├── NSString+SUIAdditions.h │ │ │ │ ├── NSString+SUICrypto.h │ │ │ │ ├── NSString+SUIRegex.h │ │ │ │ ├── SUIMacro.h │ │ │ │ ├── SUITableHelper.h │ │ │ │ ├── SUITool+Camera.h │ │ │ │ ├── SUITool+Delay.h │ │ │ │ ├── SUITool+FileManager.h │ │ │ │ ├── SUITool+OpenURL.h │ │ │ │ ├── SUITool.h │ │ │ │ ├── SUIUtils.h │ │ │ │ ├── UIButton+SUIAdditions.h │ │ │ │ ├── UIControl+SUIAdditions.h │ │ │ │ ├── UIImage+SUIAdditions.h │ │ │ │ ├── UILabel+SUIAdditions.h │ │ │ │ ├── UINavigationController+SUIAdditions.h │ │ │ │ ├── UIScrollView+SUIAdditions.h │ │ │ │ ├── UIStoryboardSegue+SUIAdditions.h │ │ │ │ ├── UITableView+SUIHelper.h │ │ │ │ ├── UITableViewCell+SUIAdditions.h │ │ │ │ ├── UITableViewCell+SUIHelper.h │ │ │ │ ├── UITextField+SUIAdditions.h │ │ │ │ ├── UITextView+SUIAdditions.h │ │ │ │ ├── UIView+SUIAdditions.h │ │ │ │ └── UIViewController+SUIAdditions.h │ │ │ └── UITableView+FDTemplateLayoutCell │ │ │ │ ├── UITableView+FDIndexPathHeightCache.h │ │ │ │ ├── UITableView+FDKeyedHeightCache.h │ │ │ │ ├── UITableView+FDTemplateLayoutCell.h │ │ │ │ └── UITableView+FDTemplateLayoutCellDebug.h │ │ └── Public │ │ │ ├── AFNetworking │ │ │ ├── AFAutoPurgingImageCache.h │ │ │ ├── AFHTTPSessionManager.h │ │ │ ├── AFImageDownloader.h │ │ │ ├── AFNetworkActivityIndicatorManager.h │ │ │ ├── AFNetworkReachabilityManager.h │ │ │ ├── AFNetworking.h │ │ │ ├── AFSecurityPolicy.h │ │ │ ├── AFURLRequestSerialization.h │ │ │ ├── AFURLResponseSerialization.h │ │ │ ├── AFURLSessionManager.h │ │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ │ ├── UIButton+AFNetworking.h │ │ │ ├── UIImage+AFNetworking.h │ │ │ ├── UIImageView+AFNetworking.h │ │ │ ├── UIKit+AFNetworking.h │ │ │ ├── UIProgressView+AFNetworking.h │ │ │ ├── UIRefreshControl+AFNetworking.h │ │ │ └── UIWebView+AFNetworking.h │ │ │ ├── FMDB │ │ │ ├── FMDB.h │ │ │ ├── FMDatabase.h │ │ │ ├── FMDatabaseAdditions.h │ │ │ ├── FMDatabasePool.h │ │ │ ├── FMDatabaseQueue.h │ │ │ └── FMResultSet.h │ │ │ ├── MJExtension │ │ │ ├── MJExtension.h │ │ │ ├── MJExtensionConst.h │ │ │ ├── MJFoundation.h │ │ │ ├── MJProperty.h │ │ │ ├── MJPropertyKey.h │ │ │ ├── MJPropertyType.h │ │ │ ├── NSObject+MJClass.h │ │ │ ├── NSObject+MJCoding.h │ │ │ ├── NSObject+MJKeyValue.h │ │ │ ├── NSObject+MJProperty.h │ │ │ └── NSString+MJExtension.h │ │ │ ├── MJRefresh │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshNormalHeader.h │ │ │ ├── MJRefreshStateHeader.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ │ │ ├── Masonry │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewConstraint.h │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── View+MASAdditions.h │ │ │ ├── View+MASShorthandAdditions.h │ │ │ └── ViewController+MASAdditions.h │ │ │ ├── SUIUtils │ │ │ ├── NSArray+SUIAdditions.h │ │ │ ├── NSArray+SUISafeAccess.h │ │ │ ├── NSData+SUIAdditions.h │ │ │ ├── NSDate+SUIAdditions.h │ │ │ ├── NSDictionary+SUIAdditions.h │ │ │ ├── NSDictionary+SUISafeAccess.h │ │ │ ├── NSIndexPath+SUIAdditions.h │ │ │ ├── NSNumber+SUIAdditions.h │ │ │ ├── NSObject+SUIAdditions.h │ │ │ ├── NSString+SUIAdditions.h │ │ │ ├── NSString+SUICrypto.h │ │ │ ├── NSString+SUIRegex.h │ │ │ ├── SUIMacro.h │ │ │ ├── SUITableHelper.h │ │ │ ├── SUITool+Camera.h │ │ │ ├── SUITool+Delay.h │ │ │ ├── SUITool+FileManager.h │ │ │ ├── SUITool+OpenURL.h │ │ │ ├── SUITool.h │ │ │ ├── SUIUtils.h │ │ │ ├── UIButton+SUIAdditions.h │ │ │ ├── UIControl+SUIAdditions.h │ │ │ ├── UIImage+SUIAdditions.h │ │ │ ├── UILabel+SUIAdditions.h │ │ │ ├── UINavigationController+SUIAdditions.h │ │ │ ├── UIScrollView+SUIAdditions.h │ │ │ ├── UIStoryboardSegue+SUIAdditions.h │ │ │ ├── UITableView+SUIHelper.h │ │ │ ├── UITableViewCell+SUIAdditions.h │ │ │ ├── UITableViewCell+SUIHelper.h │ │ │ ├── UITextField+SUIAdditions.h │ │ │ ├── UITextView+SUIAdditions.h │ │ │ ├── UIView+SUIAdditions.h │ │ │ └── UIViewController+SUIAdditions.h │ │ │ └── UITableView+FDTemplateLayoutCell │ │ │ ├── UITableView+FDIndexPathHeightCache.h │ │ │ ├── UITableView+FDKeyedHeightCache.h │ │ │ ├── UITableView+FDTemplateLayoutCell.h │ │ │ └── UITableView+FDTemplateLayoutCellDebug.h │ ├── Local Podspecs │ │ └── SUIUtils.podspec.json │ ├── MJExtension │ │ ├── LICENSE │ │ ├── MJExtension │ │ │ ├── MJExtension.h │ │ │ ├── MJExtensionConst.h │ │ │ ├── MJExtensionConst.m │ │ │ ├── MJFoundation.h │ │ │ ├── MJFoundation.m │ │ │ ├── MJProperty.h │ │ │ ├── MJProperty.m │ │ │ ├── MJPropertyKey.h │ │ │ ├── MJPropertyKey.m │ │ │ ├── MJPropertyType.h │ │ │ ├── MJPropertyType.m │ │ │ ├── NSObject+MJClass.h │ │ │ ├── NSObject+MJClass.m │ │ │ ├── NSObject+MJCoding.h │ │ │ ├── NSObject+MJCoding.m │ │ │ ├── NSObject+MJKeyValue.h │ │ │ ├── NSObject+MJKeyValue.m │ │ │ ├── NSObject+MJProperty.h │ │ │ ├── NSObject+MJProperty.m │ │ │ ├── NSString+MJExtension.h │ │ │ └── NSString+MJExtension.m │ │ └── README.md │ ├── MJRefresh │ │ ├── LICENSE │ │ ├── MJRefresh │ │ │ ├── Base │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshAutoFooter.m │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshBackFooter.m │ │ │ │ ├── MJRefreshComponent.h │ │ │ │ ├── MJRefreshComponent.m │ │ │ │ ├── MJRefreshFooter.h │ │ │ │ ├── MJRefreshFooter.m │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ └── MJRefreshHeader.m │ │ │ ├── Custom │ │ │ │ ├── Footer │ │ │ │ │ ├── Auto │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ │ └── Back │ │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ │ └── Header │ │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ │ └── MJRefreshStateHeader.m │ │ │ ├── MJRefresh.bundle │ │ │ │ └── arrow@2x.png │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshConst.m │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.m │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ ├── UIScrollView+MJRefresh.m │ │ │ ├── UIView+MJExtension.h │ │ │ └── UIView+MJExtension.m │ │ └── README.md │ ├── Manifest.lock │ ├── Masonry │ │ ├── LICENSE │ │ ├── Masonry │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASCompositeConstraint.m │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraint.m │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASConstraintMaker.m │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASLayoutConstraint.m │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewAttribute.m │ │ │ ├── MASViewConstraint.h │ │ │ ├── MASViewConstraint.m │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASAdditions.m │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.m │ │ │ ├── View+MASAdditions.h │ │ │ ├── View+MASAdditions.m │ │ │ ├── View+MASShorthandAdditions.h │ │ │ ├── ViewController+MASAdditions.h │ │ │ └── ViewController+MASAdditions.m │ │ └── README.md │ ├── Pods.xcodeproj │ │ └── project.pbxproj │ ├── SUIUtils │ │ ├── LICENSE │ │ ├── README.md │ │ └── SUIUtils │ │ │ ├── Foundation │ │ │ ├── NSArray+SUIAdditions.h │ │ │ ├── NSArray+SUIAdditions.m │ │ │ ├── NSArray+SUISafeAccess.h │ │ │ ├── NSArray+SUISafeAccess.m │ │ │ ├── NSData+SUIAdditions.h │ │ │ ├── NSData+SUIAdditions.m │ │ │ ├── NSDate+SUIAdditions.h │ │ │ ├── NSDate+SUIAdditions.m │ │ │ ├── NSDictionary+SUIAdditions.h │ │ │ ├── NSDictionary+SUIAdditions.m │ │ │ ├── NSDictionary+SUISafeAccess.h │ │ │ ├── NSDictionary+SUISafeAccess.m │ │ │ ├── NSIndexPath+SUIAdditions.h │ │ │ ├── NSIndexPath+SUIAdditions.m │ │ │ ├── NSNumber+SUIAdditions.h │ │ │ ├── NSNumber+SUIAdditions.m │ │ │ ├── NSObject+SUIAdditions.h │ │ │ ├── NSObject+SUIAdditions.m │ │ │ ├── NSString+SUIAdditions.h │ │ │ ├── NSString+SUIAdditions.m │ │ │ ├── NSString+SUICrypto.h │ │ │ ├── NSString+SUICrypto.m │ │ │ ├── NSString+SUIRegex.h │ │ │ └── NSString+SUIRegex.m │ │ │ ├── Helper │ │ │ ├── SUITableHelper.h │ │ │ ├── SUITableHelper.m │ │ │ ├── UITableView+SUIHelper.h │ │ │ ├── UITableView+SUIHelper.m │ │ │ ├── UITableViewCell+SUIHelper.h │ │ │ └── UITableViewCell+SUIHelper.m │ │ │ ├── SUIUtils.h │ │ │ ├── Tool │ │ │ ├── SUIMacro.h │ │ │ ├── SUITool+Camera.h │ │ │ ├── SUITool+Camera.m │ │ │ ├── SUITool+Delay.h │ │ │ ├── SUITool+Delay.m │ │ │ ├── SUITool+FileManager.h │ │ │ ├── SUITool+FileManager.m │ │ │ ├── SUITool+OpenURL.h │ │ │ ├── SUITool+OpenURL.m │ │ │ ├── SUITool.h │ │ │ └── SUITool.m │ │ │ └── UIKit │ │ │ ├── UIButton+SUIAdditions.h │ │ │ ├── UIButton+SUIAdditions.m │ │ │ ├── UIControl+SUIAdditions.h │ │ │ ├── UIControl+SUIAdditions.m │ │ │ ├── UIImage+SUIAdditions.h │ │ │ ├── UIImage+SUIAdditions.m │ │ │ ├── UILabel+SUIAdditions.h │ │ │ ├── UILabel+SUIAdditions.m │ │ │ ├── UINavigationController+SUIAdditions.h │ │ │ ├── UINavigationController+SUIAdditions.m │ │ │ ├── UIScrollView+SUIAdditions.h │ │ │ ├── UIScrollView+SUIAdditions.m │ │ │ ├── UIStoryboardSegue+SUIAdditions.h │ │ │ ├── UIStoryboardSegue+SUIAdditions.m │ │ │ ├── UITableViewCell+SUIAdditions.h │ │ │ ├── UITableViewCell+SUIAdditions.m │ │ │ ├── UITextField+SUIAdditions.h │ │ │ ├── UITextField+SUIAdditions.m │ │ │ ├── UITextView+SUIAdditions.h │ │ │ ├── UITextView+SUIAdditions.m │ │ │ ├── UIView+SUIAdditions.h │ │ │ ├── UIView+SUIAdditions.m │ │ │ ├── UIViewController+SUIAdditions.h │ │ │ └── UIViewController+SUIAdditions.m │ ├── Target Support Files │ │ ├── AFNetworking │ │ │ ├── AFNetworking-dummy.m │ │ │ ├── AFNetworking-prefix.pch │ │ │ └── AFNetworking.xcconfig │ │ ├── FMDB │ │ │ ├── FMDB-dummy.m │ │ │ ├── FMDB-prefix.pch │ │ │ └── FMDB.xcconfig │ │ ├── MJExtension │ │ │ ├── MJExtension-dummy.m │ │ │ ├── MJExtension-prefix.pch │ │ │ └── MJExtension.xcconfig │ │ ├── MJRefresh │ │ │ ├── MJRefresh-dummy.m │ │ │ ├── MJRefresh-prefix.pch │ │ │ └── MJRefresh.xcconfig │ │ ├── Masonry │ │ │ ├── Masonry-dummy.m │ │ │ ├── Masonry-prefix.pch │ │ │ └── Masonry.xcconfig │ │ ├── Pods │ │ │ ├── Pods-acknowledgements.markdown │ │ │ ├── Pods-acknowledgements.plist │ │ │ ├── Pods-dummy.m │ │ │ ├── Pods-frameworks.sh │ │ │ ├── Pods-resources.sh │ │ │ ├── Pods.debug.xcconfig │ │ │ └── Pods.release.xcconfig │ │ ├── SUIUtils │ │ │ ├── SUIUtils-dummy.m │ │ │ ├── SUIUtils-prefix.pch │ │ │ └── SUIUtils.xcconfig │ │ └── UITableView+FDTemplateLayoutCell │ │ │ ├── UITableView+FDTemplateLayoutCell-dummy.m │ │ │ ├── UITableView+FDTemplateLayoutCell-prefix.pch │ │ │ └── UITableView+FDTemplateLayoutCell.xcconfig │ └── UITableView+FDTemplateLayoutCell │ │ ├── Classes │ │ ├── UITableView+FDIndexPathHeightCache.h │ │ ├── UITableView+FDIndexPathHeightCache.m │ │ ├── UITableView+FDKeyedHeightCache.h │ │ ├── UITableView+FDKeyedHeightCache.m │ │ ├── UITableView+FDTemplateLayoutCell.h │ │ ├── UITableView+FDTemplateLayoutCell.m │ │ ├── UITableView+FDTemplateLayoutCellDebug.h │ │ └── UITableView+FDTemplateLayoutCellDebug.m │ │ ├── LICENSE │ │ └── README.md ├── SUIMVVMDemo.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── SUIMVVMDemo.xcworkspace │ └── contents.xcworkspacedata └── SUIMVVMDemo │ ├── .DS_Store │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── image │ │ ├── Contents.json │ │ ├── dogebread.imageset │ │ ├── Contents.json │ │ └── dogebread.png │ │ └── phil.imageset │ │ ├── Contents.json │ │ └── phil.png │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Classes │ ├── .DS_Store │ ├── Expand │ │ ├── .DS_Store │ │ ├── Category │ │ │ └── CategoryPublicHeader.h │ │ ├── Constant │ │ │ ├── .DS_Store │ │ │ └── ConstantPublicHeader.h │ │ ├── Custom │ │ │ ├── .DS_Store │ │ │ ├── Base │ │ │ │ └── .DS_Store │ │ │ └── Controller │ │ │ │ ├── BHNavViewController.h │ │ │ │ └── BHNavViewController.m │ │ ├── DataBase │ │ │ └── DataBasePublicHeader.h │ │ ├── Macros │ │ │ └── MacrosPublicHeader.h │ │ ├── Network │ │ │ └── NetworkPublicHeader.h │ │ └── Tool │ │ │ └── ToolPublicHeader.h │ ├── Other │ │ ├── .DS_Store │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ └── main.m │ ├── Resource │ │ ├── .DS_Store │ │ ├── Global │ │ │ └── .DS_Store │ │ ├── Image │ │ │ └── .DS_Store │ │ └── Plist │ │ │ └── .DS_Store │ ├── Src │ │ ├── .DS_Store │ │ ├── FirstExample │ │ │ ├── View │ │ │ │ ├── FirstCell.h │ │ │ │ ├── FirstCell.m │ │ │ │ └── FirstCell.xib │ │ │ └── ViewModel │ │ │ │ ├── FirstViewModel.h │ │ │ │ └── FirstViewModel.m │ │ ├── TwoExample │ │ │ ├── Controller │ │ │ │ ├── ThirdVC.h │ │ │ │ └── ThirdVC.m │ │ │ ├── Model │ │ │ │ ├── ThirdModel.h │ │ │ │ ├── ThirdModel.m │ │ │ │ ├── ThirdRequest.h │ │ │ │ └── ThirdRequest.m │ │ │ ├── View │ │ │ │ ├── ThirdView.h │ │ │ │ ├── ThirdView.m │ │ │ │ └── ThirdView.xib │ │ │ ├── ViewManger │ │ │ │ ├── ThirdViewManger.h │ │ │ │ └── ThirdViewManger.m │ │ │ └── ViewModel │ │ │ │ ├── ThirdViewModel.h │ │ │ │ └── ThirdViewModel.m │ │ └── firstExample │ │ │ ├── .DS_Store │ │ │ ├── Controller │ │ │ ├── FirstVC.h │ │ │ └── FirstVC.m │ │ │ ├── Model │ │ │ ├── FirstModel.h │ │ │ ├── FirstModel.m │ │ │ ├── FirstRequest.h │ │ │ └── FirstRequest.m │ │ │ └── ViewModel │ │ │ ├── FirstTableViewModel.h │ │ │ └── FirstTableViewModel.m │ ├── Utils │ │ ├── .DS_Store │ │ └── Foundation+Log.m │ └── Vender │ │ ├── .DS_Store │ │ ├── Library │ │ ├── .DS_Store │ │ └── LibraryPublicHeader.h │ │ └── SDKFiles │ │ └── SDKFilePublicHeader.h │ ├── Info.plist │ └── PrefixHeader.pch ├── SUIMVVMKit.podspec ├── SUIMVVMKit ├── .DS_Store ├── SUIMVVMKit.h └── SUIMVVMKit │ ├── NSObject+SMKCoding.h │ ├── NSObject+SMKCoding.m │ ├── NSObject+SMKProperties.h │ ├── NSObject+SMKProperties.m │ ├── NSObject+SMKRequest.h │ ├── NSObject+SMKRequest.m │ ├── SMKAction.h │ ├── SMKAction.m │ ├── SMKConstant.h │ ├── SMKExtendPublic.h │ ├── SMKMediator.h │ ├── SMKMediator.m │ ├── SMKRequestProtocol.h │ ├── SMKSingleton.h │ ├── SMKStore.h │ ├── SMKStore.m │ ├── SMKViewMangerProtocol.h │ ├── SMKViewModelProtocol.h │ ├── SMKViewProtocol.h │ ├── UICollectionViewCell+SMKConfigure.h │ ├── UICollectionViewCell+SMKConfigure.m │ ├── UITableViewCell+SMKConfigure.h │ ├── UITableViewCell+SMKConfigure.m │ ├── UIView+SMKConfigure.h │ ├── UIView+SMKConfigure.m │ ├── UIView+SMKEvents.h │ └── UIView+SMKEvents.m ├── resources ├── .DS_Store ├── MVVM.png ├── MVVM@2x.png ├── MVVM@3x.png ├── MVVMFrameWork-Thinking.png ├── MVVMFrameWork-Thinking2.jpeg ├── demo.gif ├── directory_tree.png ├── img1.jpeg ├── screenshot.png └── tree.jpeg └── source ├── MVVM.md └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xcuserstate 23 | 24 | ## Obj-C/Swift specific 25 | *.hmap 26 | *.ipa 27 | 28 | # CocoaPods 29 | # 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 33 | # 34 | # Pods/ 35 | 36 | # Carthage 37 | # 38 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 39 | # Carthage/Checkouts 40 | 41 | Carthage/Build 42 | 43 | # fastlane 44 | # 45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 46 | # screenshots whenever they are needed. 47 | # For more information about the recommended setup visit: 48 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 49 | 50 | fastlane/report.xml 51 | fastlane/screenshots 52 | 53 | *.DS_Store 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 lovemo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /SUIMVVMDemo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '7.0' 2 | pod 'AFNetworking', '>= 3.0' 3 | pod 'MJExtension' 4 | pod 'FMDB' 5 | pod 'SUIUtils', :git => 'https://github.com/randomprocess/SUIUtils' -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/Pods/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/AFNetworking/AFNetworking/AFNetworking.h: -------------------------------------------------------------------------------- 1 | // AFNetworking.h 2 | // 3 | // Copyright (c) 2013 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import 25 | #import 26 | 27 | #ifndef _AFNETWORKING_ 28 | #define _AFNETWORKING_ 29 | 30 | #import "AFURLRequestSerialization.h" 31 | #import "AFURLResponseSerialization.h" 32 | #import "AFSecurityPolicy.h" 33 | 34 | #if !TARGET_OS_WATCH 35 | #import "AFNetworkReachabilityManager.h" 36 | #endif 37 | 38 | #import "AFURLSessionManager.h" 39 | #import "AFHTTPSessionManager.h" 40 | 41 | #endif /* _AFNETWORKING_ */ 42 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/AFNetworking/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+AFNetworking.h 3 | // 4 | // 5 | // Created by Paulo Ferreira on 08/07/15. 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in 15 | // all copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | // THE SOFTWARE. 24 | 25 | #if TARGET_OS_IOS || TARGET_OS_TV 26 | 27 | #import 28 | 29 | @interface UIImage (AFNetworking) 30 | 31 | + (UIImage*) safeImageWithData:(NSData*)data; 32 | 33 | @end 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/FMDB/LICENSE.txt: -------------------------------------------------------------------------------- 1 | If you are using FMDB in your project, I'd love to hear about it. Let Gus know 2 | by sending an email to gus@flyingmeat.com. 3 | 4 | And if you happen to come across either Gus Mueller or Rob Ryan in a bar, you 5 | might consider purchasing a drink of their choosing if FMDB has been useful to 6 | you. 7 | 8 | Finally, and shortly, this is the MIT License. 9 | 10 | Copyright (c) 2008-2014 Flying Meat Inc. 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining a copy 13 | of this software and associated documentation files (the "Software"), to deal 14 | in the Software without restriction, including without limitation the rights 15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 | copies of the Software, and to permit persons to whom the Software is 17 | furnished to do so, subject to the following conditions: 18 | 19 | The above copyright notice and this permission notice shall be included in 20 | all copies or substantial portions of the Software. 21 | 22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 | THE SOFTWARE. -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/FMDB/src/fmdb/FMDB.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | FOUNDATION_EXPORT double FMDBVersionNumber; 4 | FOUNDATION_EXPORT const unsigned char FMDBVersionString[]; 5 | 6 | #import "FMDatabase.h" 7 | #import "FMResultSet.h" 8 | #import "FMDatabaseAdditions.h" 9 | #import "FMDatabaseQueue.h" 10 | #import "FMDatabasePool.h" 11 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFAutoPurgingImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFImageDownloader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFSecurityPolicy.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLSessionManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIImage+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMDB.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDB.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMDatabase.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabase.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMDatabaseAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabaseAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMDatabasePool.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabasePool.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMDatabaseQueue.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabaseQueue.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/FMDB/FMResultSet.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMResultSet.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJExtensionConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtensionConst.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJFoundation.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJProperty.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyKey.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyType.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/NSObject+MJClass.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/NSObject+MJKeyValue.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/NSObject+MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSArray+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSArray+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSArray+SUISafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSArray+SUISafeAccess.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSData+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSData+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSDate+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDate+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSDictionary+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDictionary+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSDictionary+SUISafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSIndexPath+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSNumber+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSNumber+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSObject+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSObject+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSString+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSString+SUICrypto.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUICrypto.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/NSString+SUIRegex.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUIRegex.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUIMacro.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUIMacro.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITableHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/SUITableHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITool+Camera.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+Camera.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITool+Delay.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+Delay.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITool+FileManager.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+FileManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITool+OpenURL.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+OpenURL.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUITool.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/SUIUtils.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/SUIUtils.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIButton+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIButton+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIControl+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIControl+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIImage+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIImage+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UILabel+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UILabel+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UINavigationController+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UINavigationController+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIScrollView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIScrollView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIStoryboardSegue+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UITableView+SUIHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/UITableView+SUIHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UITableViewCell+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UITableViewCell+SUIHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/UITableViewCell+SUIHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UITextField+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITextField+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UITextView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITextView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/SUIUtils/UIViewController+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIViewController+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDIndexPathHeightCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDKeyedHeightCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDTemplateLayoutCell.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Private/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDTemplateLayoutCellDebug.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFAutoPurgingImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFImageDownloader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFSecurityPolicy.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/AFNetworking/AFURLSessionManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIImage+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | ../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMDB.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDB.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMDatabase.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabase.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMDatabaseAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabaseAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMDatabasePool.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabasePool.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMDatabaseQueue.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMDatabaseQueue.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/FMDB/FMResultSet.h: -------------------------------------------------------------------------------- 1 | ../../../FMDB/src/fmdb/FMResultSet.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJExtensionConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJExtensionConst.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJFoundation.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJProperty.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyKey.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/MJPropertyType.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/NSObject+MJClass.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/NSObject+MJKeyValue.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/NSObject+MJProperty.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSArray+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSArray+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSArray+SUISafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSArray+SUISafeAccess.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSData+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSData+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSDate+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDate+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSDictionary+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDictionary+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSDictionary+SUISafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSDictionary+SUISafeAccess.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSIndexPath+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSNumber+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSNumber+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSObject+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSObject+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSString+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSString+SUICrypto.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUICrypto.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/NSString+SUIRegex.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Foundation/NSString+SUIRegex.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUIMacro.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUIMacro.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITableHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/SUITableHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITool+Camera.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+Camera.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITool+Delay.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+Delay.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITool+FileManager.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+FileManager.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITool+OpenURL.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool+OpenURL.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUITool.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Tool/SUITool.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/SUIUtils.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/SUIUtils.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIButton+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIButton+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIControl+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIControl+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIImage+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIImage+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UILabel+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UILabel+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UINavigationController+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UINavigationController+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIScrollView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIScrollView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIStoryboardSegue+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UITableView+SUIHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/UITableView+SUIHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UITableViewCell+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UITableViewCell+SUIHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/Helper/UITableViewCell+SUIHelper.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UITextField+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITextField+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UITextView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UITextView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIView+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/SUIUtils/UIViewController+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../SUIUtils/SUIUtils/UIKit/UIViewController+SUIAdditions.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/UITableView+FDTemplateLayoutCell/UITableView+FDIndexPathHeightCache.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDIndexPathHeightCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/UITableView+FDTemplateLayoutCell/UITableView+FDKeyedHeightCache.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDKeyedHeightCache.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDTemplateLayoutCell.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Headers/Public/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCellDebug.h: -------------------------------------------------------------------------------- 1 | ../../../UITableView+FDTemplateLayoutCell/Classes/UITableView+FDTemplateLayoutCellDebug.h -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Local Podspecs/SUIUtils.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SUIUtils", 3 | "version": "0.0.2", 4 | "platforms": { 5 | "ios": "7.0" 6 | }, 7 | "summary": "A collection of convenient classes for iOS.", 8 | "license": "MIT", 9 | "homepage": "https://github.com/randomprocess/SUIUtils", 10 | "authors": { 11 | "RandomSuio": "randomprocess@qq.com" 12 | }, 13 | "source": { 14 | "git": "https://github.com/randomprocess/SUIUtils.git", 15 | "tag": "0.0.2" 16 | }, 17 | "requires_arc": true, 18 | "public_header_files": "SUIUtils/**/*.h", 19 | "source_files": "SUIUtils/SUIUtils.h", 20 | "frameworks": [ 21 | "UIKit", 22 | "Foundation", 23 | "CoreGraphics", 24 | "QuartzCore" 25 | ], 26 | "subspecs": [ 27 | { 28 | "name": "Tool", 29 | "source_files": "SUIUtils/Tool/*.{h,m}" 30 | }, 31 | { 32 | "name": "Foundation", 33 | "dependencies": { 34 | "SUIUtils/Tool": [ 35 | 36 | ] 37 | }, 38 | "source_files": "SUIUtils/Foundation/*.{h,m}" 39 | }, 40 | { 41 | "name": "UIKit", 42 | "dependencies": { 43 | "SUIUtils/Foundation": [ 44 | 45 | ] 46 | }, 47 | "source_files": "SUIUtils/UIKit/*.{h,m}" 48 | }, 49 | { 50 | "name": "Helper", 51 | "dependencies": { 52 | "SUIUtils/UIKit": [ 53 | 54 | ], 55 | "UITableView+FDTemplateLayoutCell": [ 56 | "~> 1.4" 57 | ] 58 | }, 59 | "source_files": "SUIUtils/Helper/*.{h,m}" 60 | } 61 | ] 62 | } 63 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJExtension (https://github.com/CoderMJLee/MJExtension) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJExtension.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 代码地址:https://github.com/CoderMJLee/MJExtension 8 | // 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57 9 | 10 | #import "NSObject+MJCoding.h" 11 | #import "NSObject+MJProperty.h" 12 | #import "NSObject+MJClass.h" 13 | #import "NSObject+MJKeyValue.h" 14 | #import "NSString+MJExtension.h" 15 | #import "MJExtensionConst.h" -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJExtensionConst.m: -------------------------------------------------------------------------------- 1 | #ifndef __MJExtensionConst__M__ 2 | #define __MJExtensionConst__M__ 3 | 4 | #import 5 | 6 | /** 7 | * 成员变量类型(属性类型) 8 | */ 9 | NSString *const MJPropertyTypeInt = @"i"; 10 | NSString *const MJPropertyTypeShort = @"s"; 11 | NSString *const MJPropertyTypeFloat = @"f"; 12 | NSString *const MJPropertyTypeDouble = @"d"; 13 | NSString *const MJPropertyTypeLong = @"l"; 14 | NSString *const MJPropertyTypeLongLong = @"q"; 15 | NSString *const MJPropertyTypeChar = @"c"; 16 | NSString *const MJPropertyTypeBOOL1 = @"c"; 17 | NSString *const MJPropertyTypeBOOL2 = @"b"; 18 | NSString *const MJPropertyTypePointer = @"*"; 19 | 20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}"; 21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}"; 22 | NSString *const MJPropertyTypeBlock = @"@?"; 23 | NSString *const MJPropertyTypeClass = @"#"; 24 | NSString *const MJPropertyTypeSEL = @":"; 25 | NSString *const MJPropertyTypeId = @"@"; 26 | 27 | #endif -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MJFoundation : NSObject 12 | + (BOOL)isClassFromFoundation:(Class)c; 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJFoundation.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJFoundation.h" 10 | #import "MJExtensionConst.h" 11 | #import 12 | 13 | static NSSet *foundationClasses_; 14 | 15 | @implementation MJFoundation 16 | 17 | + (NSSet *)foundationClasses 18 | { 19 | if (foundationClasses_ == nil) { 20 | // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断 21 | foundationClasses_ = [NSSet setWithObjects: 22 | [NSURL class], 23 | [NSDate class], 24 | [NSValue class], 25 | [NSData class], 26 | [NSError class], 27 | [NSArray class], 28 | [NSDictionary class], 29 | [NSString class], 30 | [NSAttributedString class], nil]; 31 | } 32 | return foundationClasses_; 33 | } 34 | 35 | + (BOOL)isClassFromFoundation:(Class)c 36 | { 37 | if (c == [NSObject class] || c == [NSManagedObject class]) return YES; 38 | 39 | __block BOOL result = NO; 40 | [[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) { 41 | if ([c isSubclassOfClass:foundationClass]) { 42 | result = YES; 43 | *stop = YES; 44 | } 45 | }]; 46 | return result; 47 | } 48 | @end 49 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJProperty.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/4/17. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 包装一个成员属性 8 | 9 | #import 10 | #import 11 | #import "MJPropertyType.h" 12 | #import "MJPropertyKey.h" 13 | 14 | /** 15 | * 包装一个成员 16 | */ 17 | @interface MJProperty : NSObject 18 | /** 成员属性 */ 19 | @property (nonatomic, assign) objc_property_t property; 20 | /** 成员属性的名字 */ 21 | @property (nonatomic, readonly) NSString *name; 22 | 23 | /** 成员属性的类型 */ 24 | @property (nonatomic, readonly) MJPropertyType *type; 25 | /** 成员属性来源于哪个类(可能是父类) */ 26 | @property (nonatomic, assign) Class srcClass; 27 | 28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/ 29 | /** 设置最原始的key */ 30 | - (void)setOriginKey:(id)originKey forClass:(Class)c; 31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */ 32 | - (NSArray *)propertyKeysForClass:(Class)c; 33 | 34 | /** 模型数组中的模型类型 */ 35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c; 36 | - (Class)objectClassInArrayForClass:(Class)c; 37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/ 38 | 39 | /** 40 | * 设置object的成员变量值 41 | */ 42 | - (void)setValue:(id)value forObject:(id)object; 43 | /** 44 | * 得到object的成员属性值 45 | */ 46 | - (id)valueForObject:(id)object; 47 | 48 | /** 49 | * 初始化 50 | */ 51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | MJPropertyKeyTypeDictionary = 0, // 字典的key 13 | MJPropertyKeyTypeArray // 数组的key 14 | } MJPropertyKeyType; 15 | 16 | /** 17 | * 属性的key 18 | */ 19 | @interface MJPropertyKey : NSObject 20 | /** key的名字 */ 21 | @property (copy, nonatomic) NSString *name; 22 | /** key的种类,可能是@"10",可能是@"age" */ 23 | @property (assign, nonatomic) MJPropertyKeyType type; 24 | 25 | /** 26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值 27 | */ 28 | - (id)valueInObject:(id)object; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJPropertyKey.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJPropertyKey.h" 10 | 11 | @implementation MJPropertyKey 12 | 13 | - (id)valueInObject:(id)object 14 | { 15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) { 16 | return object[self.name]; 17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) { 18 | NSArray *array = object; 19 | NSUInteger index = self.name.intValue; 20 | if (index < array.count) return array[index]; 21 | return nil; 22 | } 23 | return nil; 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyType.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 包装一种类型 8 | 9 | #import 10 | 11 | /** 12 | * 包装一种类型 13 | */ 14 | @interface MJPropertyType : NSObject 15 | /** 类型标识符 */ 16 | @property (nonatomic, copy) NSString *code; 17 | 18 | /** 是否为id类型 */ 19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType; 20 | 21 | /** 是否为基本数字类型:int、float等 */ 22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType; 23 | 24 | /** 是否为BOOL类型 */ 25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType; 26 | 27 | /** 对象类型(如果是基本数据类型,此值为nil) */ 28 | @property (nonatomic, readonly) Class typeClass; 29 | 30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */ 31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation; 32 | /** 类型是否不支持KVC */ 33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled; 34 | 35 | /** 36 | * 获得缓存的类型对象 37 | */ 38 | + (instancetype)cachedTypeWithCode:(NSString *)code; 39 | @end -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+MJCoding.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | /** 13 | * Codeing协议 14 | */ 15 | @protocol MJCoding 16 | @optional 17 | /** 18 | * 这个数组中的属性名才会进行归档 19 | */ 20 | + (NSArray *)mj_allowedCodingPropertyNames; 21 | /** 22 | * 这个数组中的属性名将会被忽略:不进行归档 23 | */ 24 | + (NSArray *)mj_ignoredCodingPropertyNames; 25 | @end 26 | 27 | @interface NSObject (MJCoding) 28 | /** 29 | * 解码(从文件中解析对象) 30 | */ 31 | - (void)mj_decode:(NSCoder *)decoder; 32 | /** 33 | * 编码(将对象写入文件中) 34 | */ 35 | - (void)mj_encode:(NSCoder *)encoder; 36 | @end 37 | 38 | /** 39 | 归档的实现 40 | */ 41 | #define MJCodingImplementation \ 42 | - (id)initWithCoder:(NSCoder *)decoder \ 43 | { \ 44 | if (self = [super init]) { \ 45 | [self mj_decode:decoder]; \ 46 | } \ 47 | return self; \ 48 | } \ 49 | \ 50 | - (void)encodeWithCoder:(NSCoder *)encoder \ 51 | { \ 52 | [self mj_encode:encoder]; \ 53 | } 54 | 55 | #define MJExtensionCodingImplementation MJCodingImplementation -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJExtension/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MJExtension.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/6/7. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | @interface NSString (MJExtension) 13 | /** 14 | * 驼峰转下划线(loveYou -> love_you) 15 | */ 16 | - (NSString *)mj_underlineFromCamel; 17 | /** 18 | * 下划线转驼峰(love_you -> loveYou) 19 | */ 20 | - (NSString *)mj_camelFromUnderline; 21 | /** 22 | * 首字母变大写 23 | */ 24 | - (NSString *)mj_firstCharUpper; 25 | /** 26 | * 首字母变小写 27 | */ 28 | - (NSString *)mj_firstCharLower; 29 | 30 | - (BOOL)mj_isPureInt; 31 | 32 | - (NSURL *)mj_url; 33 | @end 34 | 35 | @interface NSString (MJExtensionDeprecated_v_2_5_16) 36 | - (NSString *)underlineFromCamel MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 37 | - (NSString *)camelFromUnderline MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 38 | - (NSString *)firstCharUpper MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 39 | - (NSString *)firstCharLower MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 40 | - (BOOL)isPureInt MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 41 | - (NSURL *)url MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 42 | @end 43 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用automaticallyChangeAlpha属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | @end 21 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden; 30 | @end 31 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | 15 | /** 设置state状态下的文字 */ 16 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 17 | 18 | /** 隐藏刷新状态的文字 */ 19 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 20 | @end 21 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | /** 设置state状态下的文字 */ 15 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 16 | 17 | /** 获取state状态下的title */ 18 | - (NSString *)titleForState:(MJRefreshState)state; 19 | @end 20 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 显示刷新状态的label */ 20 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 21 | /** 设置state状态下的文字 */ 22 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 23 | @end 24 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshHeaderHeight = 54.0; 6 | const CGFloat MJRefreshFooterHeight = 44.0; 7 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 8 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 9 | 10 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 11 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 12 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 13 | NSString *const MJRefreshKeyPathPanState = @"state"; 14 | 15 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 16 | 17 | NSString *const MJRefreshHeaderIdleText = @"下拉可以刷新"; 18 | NSString *const MJRefreshHeaderPullingText = @"松开立即刷新"; 19 | NSString *const MJRefreshHeaderRefreshingText = @"正在刷新数据中..."; 20 | 21 | NSString *const MJRefreshAutoFooterIdleText = @"点击或上拉加载更多"; 22 | NSString *const MJRefreshAutoFooterRefreshingText = @"正在加载更多的数据..."; 23 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"已经全部加载完毕"; 24 | 25 | NSString *const MJRefreshBackFooterIdleText = @"上拉可以加载更多"; 26 | NSString *const MJRefreshBackFooterPullingText = @"松开立即加载更多"; 27 | NSString *const MJRefreshBackFooterRefreshingText = @"正在加载更多的数据..."; 28 | NSString *const MJRefreshBackFooterNoMoreDataText = @"已经全部加载完毕"; -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_insetT; 14 | @property (assign, nonatomic) CGFloat mj_insetB; 15 | @property (assign, nonatomic) CGFloat mj_insetL; 16 | @property (assign, nonatomic) CGFloat mj_insetR; 17 | 18 | @property (assign, nonatomic) CGFloat mj_offsetX; 19 | @property (assign, nonatomic) CGFloat mj_offsetY; 20 | 21 | @property (assign, nonatomic) CGFloat mj_contentW; 22 | @property (assign, nonatomic) CGFloat mj_contentH; 23 | @end 24 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** 下拉刷新控件 */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 19 | /** 上拉刷新控件 */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 randomprocess 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/README.md: -------------------------------------------------------------------------------- 1 | # SUIUtils 2 | 3 | A collection of useful Objective-C utilities. 4 | 5 | 6 | # License 7 | 8 | SUIUtils is available under the MIT license. See the LICENSE file for more info. 9 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSData+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSData (SUIAdditions) 14 | 15 | 16 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 17 | * Prehash 18 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 19 | 20 | #pragma mark - Prehash 21 | 22 | @property (readonly,copy) NSString *sui_toUTF8String; 23 | 24 | 25 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 26 | * Base64 27 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 28 | 29 | #pragma mark - Base64 30 | 31 | @property (nullable,readonly,copy) NSString *sui_base64Encode; 32 | 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSData+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "NSData+SUIAdditions.h" 10 | 11 | @implementation NSData (SUIAdditions) 12 | 13 | 14 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 15 | * Prehash 16 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 17 | 18 | #pragma mark - Prehash 19 | 20 | - (NSString *)sui_toUTF8String 21 | { 22 | NSString *curString = [[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding]; 23 | return curString; 24 | } 25 | 26 | 27 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 28 | * Base64 29 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 30 | 31 | #pragma mark - Base64 32 | 33 | - (NSString *)sui_base64Encode 34 | { 35 | if (self.length == 0) return nil; 36 | NSString *curStr = [self base64EncodedStringWithOptions:0]; 37 | return curStr; 38 | } 39 | 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSDate+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSDate (SUIAdditions) 14 | 15 | 16 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 17 | * Prehash 18 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 19 | 20 | #pragma mark - Prehash 21 | 22 | @property (readonly) NSTimeInterval sui_toTime; 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSDate+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "NSDate+SUIAdditions.h" 10 | 11 | @implementation NSDate (SUIAdditions) 12 | 13 | 14 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 15 | * Prehash 16 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 17 | 18 | #pragma mark - Prehash 19 | 20 | - (NSTimeInterval)sui_toTime 21 | { 22 | return [self timeIntervalSince1970]; 23 | } 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSDictionary+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSDictionary<__covariant KeyType, __covariant ObjectType> (SUIAdditions) 14 | 15 | 16 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 17 | * Prehash 18 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 19 | 20 | #pragma mark - Prehash 21 | 22 | @property (nullable,readonly,copy) NSString *sui_toString; 23 | 24 | 25 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 26 | * Operate 27 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 28 | 29 | #pragma mark - Operate 30 | 31 | - (BOOL)sui_hasKey:(id)cKey; 32 | 33 | - (void)sui_each:(void (^)(KeyType key, ObjectType obj))cb; 34 | 35 | - (void)sui_eachWithStop:(BOOL (^)(KeyType key, ObjectType obj))cb; 36 | 37 | - (instancetype)sui_map:(id (^)(KeyType key, ObjectType obj))cb; 38 | 39 | - (instancetype)sui_pick:(NSArray *)cKeys; 40 | 41 | - (instancetype)sui_Omit:(NSArray *)cKeys; 42 | 43 | - (instancetype)sui_merge:(NSDictionary *)dictionary; 44 | 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSIndexPath+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSIndexPath (SUIAdditions) 14 | 15 | 16 | - (instancetype)sui_previousRow; 17 | 18 | - (instancetype)sui_nextRow; 19 | 20 | - (instancetype)sui_previousSection; 21 | 22 | - (instancetype)sui_nextSection; 23 | 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSIndexPath+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "NSIndexPath+SUIAdditions.h" 10 | #import 11 | 12 | @implementation NSIndexPath (SUIAdditions) 13 | 14 | 15 | - (instancetype)sui_previousRow 16 | { 17 | NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row-1 18 | inSection:self.section]; 19 | return curIndexPath; 20 | } 21 | 22 | - (instancetype)sui_nextRow 23 | { 24 | NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row+1 25 | inSection:self.section]; 26 | return curIndexPath; 27 | } 28 | 29 | - (instancetype)sui_previousSection 30 | { 31 | NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row 32 | inSection:self.section-1]; 33 | return curIndexPath; 34 | } 35 | 36 | - (instancetype)sui_nextSection 37 | { 38 | NSIndexPath *curIndexPath = [NSIndexPath indexPathForRow:self.row 39 | inSection:self.section+1]; 40 | return curIndexPath; 41 | } 42 | 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Foundation/NSObject+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/16. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSObject (SUIAdditions) 15 | 16 | 17 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 18 | * AssociatedObject 19 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 20 | 21 | #pragma mark - AssociatedObject 22 | 23 | - (nullable id)sui_getAssociatedObjectWithKey:(const void *)cKey; 24 | 25 | - (void)sui_setAssociatedAssignObject:(nullable id)cValue key:(const void *)cKey; 26 | 27 | - (void)sui_setAssociatedRetainObject:(nullable id)cValue key:(const void *)cKey; 28 | 29 | - (void)sui_setAssociatedCopyObject:(nullable id)cValue key:(const void *)cKey; 30 | 31 | - (void)sui_setAssociatedObject:(nullable id)cValue key:(const void *)cKey policy:(objc_AssociationPolicy)cPolicy; 32 | 33 | 34 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 35 | * PerformedOnce 36 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 37 | 38 | #pragma mark - PerformedOnce 39 | 40 | - (void)sui_performOnce:(void (^)(void))cb key:(NSString *)cKey; 41 | 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Helper/UITableView+SUIHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+SUIHelper.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class SUITableHelper; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UITableView (SUIHelper) 16 | 17 | 18 | @property (null_resettable,strong) SUITableHelper *sui_tableHelper; 19 | 20 | @property (nonatomic) IBInspectable BOOL sui_autoSizingCell; 21 | 22 | - (void)sui_resetDataAry:(NSArray *)newDataAry; 23 | - (void)sui_resetDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; 24 | - (void)sui_reloadDataAry:(NSArray *)newDataAry; 25 | - (void)sui_reloadDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; 26 | - (void)sui_addDataAry:(NSArray *)newDataAry; 27 | - (void)sui_addDataAry:(NSArray *)newDataAry forSection:(NSInteger)cSection; 28 | - (void)sui_insertData:(id)cModel AtIndex:(NSIndexPath *)cIndexPath; 29 | - (void)sui_deleteDataAtIndex:(NSIndexPath *)cIndexPath; 30 | 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Helper/UITableViewCell+SUIHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SUIHelper.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol SUITableHelperProtocol 14 | @optional 15 | 16 | - (void)sui_cellWillDisplayWithModel:(id)cModel; 17 | 18 | @end 19 | 20 | 21 | @interface UITableViewCell (SUIHelper) 22 | 23 | 24 | @property (nullable,nonatomic,strong) NSIndexPath *sui_indexPath; 25 | 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Helper/UITableViewCell+SUIHelper.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SUIHelper.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UITableViewCell+SUIHelper.h" 10 | #import "NSObject+SUIAdditions.h" 11 | 12 | @implementation UITableViewCell (SUIHelper) 13 | 14 | 15 | - (NSIndexPath *)sui_indexPath 16 | { 17 | NSIndexPath *curIndexPath = [self sui_getAssociatedObjectWithKey:@selector(sui_indexPath)]; 18 | return curIndexPath; 19 | } 20 | - (void)setSui_indexPath:(NSIndexPath *)sui_indexPath 21 | { 22 | [self sui_setAssociatedRetainObject:sui_indexPath key:@selector(sui_indexPath)]; 23 | } 24 | 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+Camera.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+Camera.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface SUITool (Camera) 14 | 15 | 16 | + (BOOL)cameraAvailable; 17 | 18 | + (BOOL)cameraRearAvailable; 19 | 20 | + (BOOL)cameraFrontAvailable; 21 | 22 | + (BOOL)photoLibraryAvailable; 23 | 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+Camera.m: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+Camera.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool+Camera.h" 10 | #import 11 | #import "SUIMacro.h" 12 | 13 | @implementation SUITool (Camera) 14 | 15 | 16 | + (BOOL)cameraAvailable 17 | { 18 | BOOL ret = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]; 19 | SUIAssert(ret, @"Camera unavailable."); 20 | return ret; 21 | } 22 | 23 | + (BOOL)cameraRearAvailable 24 | { 25 | BOOL ret = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]; 26 | SUIAssert(ret, @"Camera rear unavailable."); 27 | return ret; 28 | } 29 | 30 | + (BOOL)cameraFrontAvailable 31 | { 32 | BOOL ret = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]; 33 | SUIAssert(ret, @"Camera front unavailable."); 34 | return ret; 35 | } 36 | 37 | + (BOOL)photoLibraryAvailable 38 | { 39 | BOOL ret = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]; 40 | SUIAssert(ret, @"Photo library unavailable."); 41 | return ret; 42 | } 43 | 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+Delay.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+Delay.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef void (^SUIToolDelayTask)(BOOL cancel); 14 | 15 | @interface SUITool (Delay) 16 | 17 | 18 | + (SUIToolDelayTask)delay:(NSTimeInterval)delay cb:(void (^)(void))completion; 19 | 20 | + (void)cancelDelayTask:(SUIToolDelayTask)cTask; 21 | 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+Delay.m: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+Delay.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool+Delay.h" 10 | 11 | @implementation SUITool (Delay) 12 | 13 | 14 | + (SUIToolDelayTask)delay:(NSTimeInterval)delay cb:(void (^)(void))completion; 15 | { 16 | __block dispatch_block_t closure = completion; 17 | __block SUIToolDelayTask currTask = nil; 18 | 19 | SUIToolDelayTask delayedBlock = ^(BOOL cancel) { 20 | if (cancel == NO) { 21 | dispatch_async(dispatch_get_main_queue(), closure); 22 | } 23 | closure = nil; 24 | currTask = nil; 25 | }; 26 | 27 | currTask = delayedBlock; 28 | 29 | [self sui_delayExecutive:delay cb:^{ 30 | if (currTask) currTask(NO); 31 | }]; 32 | return currTask; 33 | } 34 | 35 | + (void)cancelDelayTask:(SUIToolDelayTask)cTask 36 | { 37 | if (cTask) cTask(YES); 38 | } 39 | 40 | + (void)sui_delayExecutive:(NSTimeInterval)delayInSeconds cb:(void (^)(void))completionBlock 41 | { 42 | dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 43 | dispatch_after(popTime, dispatch_get_main_queue(), completionBlock); 44 | } 45 | 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+FileManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+FileManager.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface SUITool (FileManager) 14 | 15 | 16 | + (BOOL)fileCreateDirectory:(NSString *)filePath; 17 | 18 | + (BOOL)fileExist:(NSString *)filePath; 19 | 20 | + (BOOL)fileWrite:(NSData *)data toPath:(NSString *)filePath; 21 | 22 | + (BOOL)fileMove:(NSString *)sourcePath toPath:(NSString *)filePath; 23 | 24 | + (BOOL)fileCopy:(NSString *)sourcePath toPath:(NSString *)filePath; 25 | 26 | + (nullable NSData *)fileRead:(NSString *)filePath; 27 | 28 | + (NSUInteger)fileSize:(NSString *)filePath; 29 | 30 | + (BOOL)fileDelete:(NSString *)filePath; 31 | 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+OpenURL.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+OpenURL.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface SUITool (OpenURL) 14 | 15 | 16 | + (BOOL)openMail:(NSString *)mail; 17 | 18 | + (BOOL)openPhone:(NSString *)phone; 19 | 20 | + (BOOL)openAppStore:(NSString *)appId; 21 | 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool+OpenURL.m: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool+OpenURL.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "SUITool+OpenURL.h" 10 | #import 11 | #import "SUIMacro.h" 12 | 13 | @implementation SUITool (OpenURL) 14 | 15 | 16 | + (BOOL)openMail:(NSString *)mail 17 | { 18 | NSString *curURL = gFormat(@"mailto://%@", mail); 19 | BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; 20 | SUIAssert(ret, @"open mail failed Mail ⤭ %@ ⤪", mail); 21 | return ret; 22 | } 23 | 24 | + (BOOL)openPhone:(NSString *)phone 25 | { 26 | NSString *curURL = gFormat(@"telprompt://%@", phone); 27 | BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; 28 | SUIAssert(ret, @"open phone failed Phone ⤭ %@ ⤪", phone); 29 | return ret; 30 | } 31 | 32 | + (BOOL)openAppStore:(NSString *)appId 33 | { 34 | NSString *curURL = gFormat(@"itms-apps://itunes.apple.com/app/id%@", appId); 35 | BOOL ret = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:curURL]]; 36 | SUIAssert(ret, @"open app store failed AppId ⤭ %@ ⤪", appId); 37 | return ret; 38 | } 39 | 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/Tool/SUITool.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUITool.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/15. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef NS_ENUM(NSInteger, SUILaunchedType) { 14 | SUILaunchedLatestVersion = 0, 15 | SUILaunchedFirstLaunched = 1, 16 | SUILaunchedUpdateVersion = 2 17 | }; 18 | 19 | @interface SUITool : NSObject 20 | 21 | 22 | + (SUILaunchedType)launchedType; 23 | 24 | + (nullable NSString *)previousVersion; 25 | 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIControl+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIControl (SUIAdditions) 14 | 15 | 16 | @property (nonatomic) BOOL sui_enabled; 17 | @property (nonatomic) BOOL sui_selected; 18 | @property (nonatomic) BOOL sui_highlighted; 19 | 20 | - (void)sui_click:(void (^)(void))cb; 21 | - (void)sui_controlEvents:(UIControlEvents)controlEvents cb:(void (^)(void))cb; 22 | 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIImage+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIImage (SUIAdditions) 14 | 15 | 16 | - (UIImage * __null_unspecified)sui_imageWithTintColor:(UIColor *)tintColo; // kCGBlendModeDestinationIn 17 | - (UIImage * __null_unspecified)sui_imageWithGradientTintColor:(UIColor *)tintColo; // kCGBlendModeOverlay 18 | - (UIImage * __null_unspecified)sui_imageWithTintColor:(UIColor *)tintColo blendMode:(CGBlendMode)blendMode; 19 | 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIImage+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UIImage+SUIAdditions.h" 10 | 11 | @implementation UIImage (SUIAdditions) 12 | 13 | 14 | - (UIImage *)sui_imageWithTintColor:(UIColor *)tintColo 15 | { 16 | return [self sui_imageWithTintColor:tintColo blendMode:kCGBlendModeDestinationIn]; 17 | } 18 | 19 | - (UIImage *)sui_imageWithGradientTintColor:(UIColor *)tintColo 20 | { 21 | return [self sui_imageWithTintColor:tintColo blendMode:kCGBlendModeOverlay]; 22 | } 23 | 24 | - (UIImage *)sui_imageWithTintColor:(UIColor *)tintColo blendMode:(CGBlendMode)blendMode 25 | { 26 | //We want to keep alpha, set opaque to NO; Use 0.0f for scale to use the scale factor of the device’s main screen. 27 | UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); 28 | [tintColo setFill]; 29 | CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height); 30 | UIRectFill(bounds); 31 | 32 | //Draw the tinted image in context 33 | [self drawInRect:bounds blendMode:blendMode alpha:1.0f]; 34 | 35 | if (blendMode != kCGBlendModeDestinationIn) { 36 | [self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0f]; 37 | } 38 | 39 | UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext(); 40 | UIGraphicsEndImageContext(); 41 | 42 | return tintedImage; 43 | } 44 | 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UILabel+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UILabel (SUIAdditions) 14 | 15 | /** 16 | * set text hex color 17 | */ 18 | @property (assign,nonatomic) IBInspectable NSString *sui_textHexColor; 19 | 20 | /** 21 | * 为UILabel添加中划线 22 | * 23 | * @param lineColor 划线颜色 24 | * @param lineTextColor 划线文本颜色 25 | * @param range 划线范围 26 | */ 27 | - (void)sui_addHorizontalLineWithColor:(UIColor *)lineColor lineTextColor:(UIColor *)lineTextColor range:(NSRange)range; 28 | 29 | - (CGFloat)sui_calculateHeight; 30 | 31 | - (CGSize)sui_calculateSize; 32 | 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UINavigationController+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UINavigationController (SUIAdditions) 14 | 15 | 16 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 17 | * Relationship 18 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 19 | 20 | #pragma mark - Relationship 21 | 22 | @property (nullable,readonly,copy) __kindof UIViewController *sui_rootVC; 23 | 24 | @property (readonly) BOOL sui_onlyHasRootVC; 25 | 26 | - (nullable __kindof UIViewController *)sui_findVC:(NSString *)className; 27 | 28 | - (nullable __kindof UIViewController *)sui_findReverseVC:(NSString *)className; 29 | 30 | 31 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 32 | * StoryboardLink 33 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 34 | 35 | #pragma mark - StoryboardLink 36 | 37 | @property (nullable,nonatomic,copy) IBInspectable NSString *sui_storyboardNameAndID; 38 | 39 | 40 | /*o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o* 41 | * Pop 42 | *o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~*/ 43 | 44 | #pragma mark - Pop 45 | 46 | - (nullable NSArray<__kindof UIViewController *> *)sui_popToVC:(NSString *)className animated:(BOOL)animated; 47 | - (nullable NSArray<__kindof UIViewController *> *)sui_popToIndex:(NSUInteger)cIndex animated:(BOOL)animated; 48 | 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIStoryboardSegue+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/19. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIStoryboardSegue (SUIAdditions) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UIStoryboardSegue+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIStoryboardSegue+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/19. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UIStoryboardSegue+SUIAdditions.h" 10 | #import "SUIMacro.h" 11 | #import 12 | 13 | @implementation UIStoryboardSegue (SUIAdditions) 14 | 15 | // 16 | //+ (void)load 17 | //{ 18 | // static dispatch_once_t sui_onceToken; 19 | // dispatch_once(&sui_onceToken, ^{ 20 | // 21 | // Method originMethod = class_getInstanceMethod([self class], @selector(perform)); 22 | // Method swizzMthod = class_getInstanceMethod([self class], @selector(sui_perform)); 23 | // 24 | // BOOL didAdd = class_addMethod([self class], @selector(perform), 25 | // method_getImplementation(swizzMthod), method_getTypeEncoding(swizzMthod)); 26 | // 27 | // if (didAdd) { 28 | // class_replaceMethod([self class], @selector(sui_perform), 29 | // method_getImplementation(originMethod),method_getTypeEncoding(originMethod)); 30 | // } else { 31 | // method_exchangeImplementations(originMethod, swizzMthod); 32 | // } 33 | // }); 34 | //} 35 | // 36 | //- (void)sui_perform 37 | //{ 38 | // [self sui_perform]; 39 | // 40 | // SUILogObj(self.sourceViewController); 41 | // SUILogObj(self.destinationViewController); 42 | // SUILogLine 43 | //} 44 | 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITableViewCell+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UITableViewCell (SUIAdditions) 14 | 15 | 16 | @property (nonatomic,weak) UITableView *sui_tableView; 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITableViewCell+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UITableViewCell+SUIAdditions.h" 10 | #import "NSObject+SUIAdditions.h" 11 | #import "UIView+SUIAdditions.h" 12 | 13 | @implementation UITableViewCell (SUIAdditions) 14 | 15 | 16 | - (UITableView *)sui_tableView 17 | { 18 | UITableView *curTableView = [self sui_getAssociatedObjectWithKey:@selector(sui_tableView)]; 19 | if (curTableView) return curTableView; 20 | 21 | curTableView = [self sui_findSupview:@"UITableView"]; 22 | if (curTableView) { 23 | self.sui_tableView = curTableView; 24 | } 25 | return curTableView; 26 | } 27 | - (void)setSui_tableView:(UITableView *)sui_tableView 28 | { 29 | [self sui_setAssociatedAssignObject:sui_tableView key:@selector(sui_tableView)]; 30 | } 31 | 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITextField+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UITextField (SUIAdditions) 14 | 15 | 16 | @property (nonatomic) IBInspectable BOOL sui_showKeyboard; 17 | 18 | - (void)sui_dismissKeyboard; 19 | 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITextField+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UITextField+SUIAdditions.h" 10 | 11 | @implementation UITextField (SUIAdditions) 12 | 13 | 14 | - (BOOL)sui_showKeyboard 15 | { 16 | if (![self isFirstResponder]) 17 | { 18 | return [self becomeFirstResponder]; 19 | } 20 | return YES; 21 | } 22 | - (void)setSui_showKeyboard:(BOOL)sui_showKeyboard 23 | { 24 | if (sui_showKeyboard && ![self isFirstResponder]) 25 | { 26 | [self becomeFirstResponder]; 27 | } 28 | } 29 | 30 | - (void)sui_dismissKeyboard 31 | { 32 | if (self.isFirstResponder) 33 | { 34 | [self resignFirstResponder]; 35 | } 36 | } 37 | 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITextView+SUIAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+SUIAdditions.h 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UITextView (SUIAdditions) 14 | 15 | 16 | @property (nonatomic) IBInspectable BOOL sui_showKeyboard; 17 | 18 | - (void)sui_dismissKeyboard; 19 | 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/SUIUtils/SUIUtils/UIKit/UITextView+SUIAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+SUIAdditions.m 3 | // SUIUtilsDemo 4 | // 5 | // Created by RandomSuio on 16/2/18. 6 | // Copyright © 2016年 RandomSuio. All rights reserved. 7 | // 8 | 9 | #import "UITextView+SUIAdditions.h" 10 | 11 | @implementation UITextView (SUIAdditions) 12 | 13 | 14 | - (BOOL)sui_showKeyboard 15 | { 16 | if (![self isFirstResponder]) 17 | { 18 | return [self becomeFirstResponder]; 19 | } 20 | return YES; 21 | } 22 | - (void)setSui_showKeyboard:(BOOL)sui_showKeyboard 23 | { 24 | if (sui_showKeyboard && ![self isFirstResponder]) 25 | { 26 | [self becomeFirstResponder]; 27 | } 28 | } 29 | 30 | - (void)sui_dismissKeyboard 31 | { 32 | if (self.isFirstResponder) 33 | { 34 | [self resignFirstResponder]; 35 | } 36 | } 37 | 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_AFNetworking : NSObject 3 | @end 4 | @implementation PodsDummy_AFNetworking 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #ifndef TARGET_OS_IOS 6 | #define TARGET_OS_IOS TARGET_OS_IPHONE 7 | #endif 8 | 9 | #ifndef TARGET_OS_WATCH 10 | #define TARGET_OS_WATCH 0 11 | #endif 12 | 13 | #ifndef TARGET_OS_TV 14 | #define TARGET_OS_TV 0 15 | #endif 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FMDB : NSObject 3 | @end 4 | @implementation PodsDummy_FMDB 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/FMDB/FMDB.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FMDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_LDFLAGS = -l"sqlite3" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJExtension : NSObject 3 | @end 4 | @implementation PodsDummy_MJExtension 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJExtension/MJExtension.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | PODS_ROOT = ${SRCROOT} 4 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | PODS_ROOT = ${SRCROOT} 4 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Pods/Pods-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods : NSObject 3 | @end 4 | @implementation PodsDummy_Pods 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" 5 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/Pods/Pods.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -isystem "${PODS_ROOT}/Headers/Public/MJExtension" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SUIUtils" -isystem "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"MJExtension" -l"MJRefresh" -l"Masonry" -l"SUIUtils" -l"UITableView+FDTemplateLayoutCell" -l"sqlite3" -framework "CoreGraphics" -framework "Foundation" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" 5 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SUIUtils : NSObject 3 | @end 4 | @implementation PodsDummy_SUIUtils 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/SUIUtils/SUIUtils.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SUIUtils" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_UITableView_FDTemplateLayoutCell : NSObject 3 | @end 4 | @implementation PodsDummy_UITableView_FDTemplateLayoutCell 5 | @end 6 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/Target Support Files/UITableView+FDTemplateLayoutCell/UITableView+FDTemplateLayoutCell.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/UITableView+FDTemplateLayoutCell" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SUIUtils" "${PODS_ROOT}/Headers/Public/UITableView+FDTemplateLayoutCell" 3 | PODS_ROOT = ${SRCROOT} 4 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/UITableView+FDTemplateLayoutCell/Classes/UITableView+FDTemplateLayoutCellDebug.h: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog ) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | // SOFTWARE. 22 | 23 | #import 24 | 25 | @interface UITableView (FDTemplateLayoutCellDebug) 26 | 27 | /// Helps to debug or inspect what is this "FDTemplateLayoutCell" extention doing, 28 | /// turning on to print logs when "creating", "calculating", "precaching" or "hitting cache". 29 | /// 30 | /// Default to NO, log by NSLog. 31 | /// 32 | @property (nonatomic, assign) BOOL fd_debugLogEnabled; 33 | 34 | /// Debug log controlled by "fd_debugLogEnabled". 35 | - (void)fd_debugLog:(NSString *)message; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /SUIMVVMDemo/Pods/UITableView+FDTemplateLayoutCell/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/dogebread.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dogebread.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/dogebread.imageset/dogebread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/dogebread.imageset/dogebread.png -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/phil.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "phil.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/phil.imageset/phil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Assets.xcassets/image/phil.imageset/phil.png -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Category/CategoryPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // CategoryPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef CategoryPublicHeader_h 10 | #define CategoryPublicHeader_h 11 | 12 | 13 | #endif /* CategoryPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Constant/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Constant/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Constant/ConstantPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ConstantPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef ConstantPublicHeader_h 10 | #define ConstantPublicHeader_h 11 | 12 | 13 | #endif /* ConstantPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Custom/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Custom/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Custom/Base/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Custom/Base/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Custom/Controller/BHNavViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BHNavViewController.h 3 | // HarmoniousCommunity 4 | // 5 | // Created by love on 15/11/17. 6 | // Copyright © 2015年 love. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BHNavViewController : UINavigationController 12 | 13 | +(void)setupNavTheme; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/DataBase/DataBasePublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // DataBasePublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef DataBasePublicHeader_h 10 | #define DataBasePublicHeader_h 11 | 12 | 13 | #endif /* DataBasePublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Macros/MacrosPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MacrosPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef MacrosPublicHeader_h 10 | #define MacrosPublicHeader_h 11 | 12 | 13 | #endif /* MacrosPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Network/NetworkPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // NetworkPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef NetworkPublicHeader_h 10 | #define NetworkPublicHeader_h 11 | 12 | 13 | #endif /* NetworkPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Expand/Tool/ToolPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // ToolPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef ToolPublicHeader_h 10 | #define ToolPublicHeader_h 11 | 12 | 13 | #endif /* ToolPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Other/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Other/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Other/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Other/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Global/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Global/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Image/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Image/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Plist/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Resource/Plist/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstCell.h 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/5. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface FirstCell : UITableViewCell 13 | 14 | 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/View/FirstCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FirstCell.m 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/5. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import "FirstCell.h" 10 | #import "FirstModel.h" 11 | #import "UITableViewCell+SMKConfigure.h" 12 | 13 | @interface FirstCell () 14 | 15 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 16 | @property (weak, nonatomic) IBOutlet UILabel *summaryLabel; 17 | @property (weak, nonatomic) IBOutlet UILabel *publisherLabel; 18 | @property (weak, nonatomic) IBOutlet UIImageView *iconImageView; 19 | 20 | @end 21 | 22 | @implementation FirstCell 23 | 24 | - (void)smk_configure:(UITableViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath { 25 | FirstModel *firstModel = (FirstModel *)model; 26 | self.titleLabel.text = firstModel.title ; 27 | self.summaryLabel.text = firstModel.summary; 28 | self.publisherLabel.text = firstModel.publisher; 29 | self.iconImageView.image = ((indexPath.row) % 2 == 0) ? [UIImage imageNamed:@"phil"] : [UIImage imageNamed:@"dogebread"]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstViewModel.h 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/23. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FirstViewModel : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/FirstExample/ViewModel/FirstViewModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // FirstViewModel.m 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/23. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import "FirstViewModel.h" 10 | #import "FirstModel.h" 11 | #import "FirstRequest.h" 12 | #import "SMKAction.h" 13 | 14 | @interface FirstViewModel () 15 | 16 | @end 17 | 18 | @implementation FirstViewModel 19 | 20 | - (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure { 21 | 22 | // // 方式1 23 | // return [[SMKAction sharedAction] sendRequest:[[FirstRequest alloc]init] progress:nil success:^(id responseObject) { 24 | // if (responseObject) { 25 | // NSArray *modelArray = [FirstModel mj_objectArrayWithKeyValuesArray:responseObject[@"books"]]; 26 | // success(modelArray); 27 | // } 28 | // } failure:nil]; 29 | 30 | 31 | return [[SMKAction sharedAction] sendRequestBlock:^(NSObject *request) { 32 | 33 | // // 方式2 34 | // return [[FirstRequest alloc]init]; 35 | 36 | // 方式3 37 | //smk_url (如果设置了url,则不需要在设置scheme,host,path 属性) 38 | request.smk_scheme = @"https"; 39 | request.smk_host = @"api.douban.com"; 40 | request.smk_path = @"/v2/book/search"; 41 | request.smk_method = SMKRequestMethodGET; // default 42 | request.smk_params = @{@"q": @"基础"}; 43 | 44 | return request; 45 | 46 | } progress:nil success:^(id responseObject) { 47 | if (responseObject) { 48 | NSArray *modelArray = [FirstModel mj_objectArrayWithKeyValuesArray:responseObject[@"books"]]; 49 | success(modelArray); 50 | } 51 | } failure:nil]; 52 | 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/Controller/ThirdVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdVC.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ThirdVC : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/Model/ThirdModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdModel.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ThirdModel : NSObject 12 | 13 | @property (nonatomic, copy) NSString *publisher; 14 | @property (nonatomic, copy) NSString *title; 15 | @property (nonatomic, copy) NSString *summary; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/Model/ThirdModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdModel.m 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import "ThirdModel.h" 10 | 11 | @implementation ThirdModel 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/Model/ThirdRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdRequest.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKRequestProtocol.h" 11 | #import "NSObject+SMKRequest.h" 12 | 13 | @interface ThirdRequest : NSObject 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/Model/ThirdRequest.m: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdRequest.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import "ThirdRequest.h" 10 | 11 | @implementation ThirdRequest 12 | 13 | - (void)smk_requestConfigures { 14 | 15 | self.smk_scheme = @"https"; 16 | self.smk_host = @"api.douban.com"; 17 | self.smk_path = @"/v2/book/search"; 18 | self.smk_method = SMKRequestMethodGET; 19 | 20 | } 21 | 22 | - (id)smk_requestParameters { 23 | return @{@"q": @"基础"}; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/View/ThirdView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdView.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ThirdView : UIView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/View/ThirdView.m: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdView.m 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import "ThirdView.h" 10 | #import "ThirdModel.h" 11 | #import "UIView+SMKEvents.h" 12 | #import "UIView+SMKConfigure.h" 13 | #import "ThirdViewModel.h" 14 | 15 | @interface ThirdView() 16 | @property (weak, nonatomic) IBOutlet UILabel *testLabel; 17 | @end 18 | 19 | @implementation ThirdView 20 | 21 | // 按钮事件 22 | - (IBAction)testBtnClick:(UIButton *)sender { 23 | // 传递事件 24 | // if (self.delegate && [self.delegate respondsToSelector:@selector(smk_view:withEvents:)]) { 25 | // [self.delegate smk_view:self withEvents:@{@"click": @"btn"}]; 26 | // } 27 | 28 | if (self.viewEventsBlock) { 29 | self.viewEventsBlock(@"btnClick"); 30 | } 31 | } 32 | 33 | // 按钮事件 34 | - (IBAction)jumpOtherVC:(UIButton *)sender { 35 | // 传递事件 36 | if (self.viewDelegate && [self.viewDelegate respondsToSelector:@selector(smk_view:withEvents:)]) { 37 | [self.viewDelegate smk_view:self withEvents:@{@"jump": @"vc"}]; 38 | } 39 | } 40 | 41 | //// 根据模型数据配置View 42 | //- (void)smk_configureViewWithModel:(id)model { 43 | // ThirdModel *thirdModel = (ThirdModel *)model; 44 | // self.testLabel.text = thirdModel.title; 45 | //} 46 | 47 | - (void)smk_configureViewWithViewModel:(id)viewModel { 48 | 49 | [viewModel smk_viewModelWithModelBlcok:^(id model) { 50 | ThirdModel *thirdModel = (ThirdModel *)model; 51 | self.testLabel.text = thirdModel.title; 52 | }]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/ViewManger/ThirdViewManger.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdViewManger.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/8. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ThirdViewManger : NSObject 12 | 13 | 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/TwoExample/ViewModel/ThirdViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdViewModel.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import "SUIMVVMKit.h" 10 | 11 | @interface ThirdViewModel : NSObject 12 | 13 | //- (id)getRandomData:(NSArray *)array; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Controller/FirstVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstVC.h 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/5. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FirstVC : UIViewController 12 | 13 | @end 14 | 15 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstModel.h 3 | // XTMultipleTables 4 | // 5 | // Created by momo on 15/12/5. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface FirstModel : NSObject 13 | 14 | @property (nonatomic, copy) NSString *publisher; 15 | @property (nonatomic, copy) NSString *title; 16 | @property (nonatomic, copy) NSString *summary; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // FirstModel.m 3 | // XTMultipleTables 4 | // 5 | // Created by momo on 15/12/5. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import "FirstModel.h" 10 | 11 | @implementation FirstModel 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstRequest.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKRequestProtocol.h" 11 | #import "NSObject+SMKRequest.h" 12 | 13 | @interface FirstRequest : NSObject 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/Model/FirstRequest.m: -------------------------------------------------------------------------------- 1 | // 2 | // FirstRequest.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import "FirstRequest.h" 10 | 11 | @implementation FirstRequest 12 | 13 | - (void)smk_requestConfigures { 14 | self.smk_url = @"https://api.douban.com/v2/book/search"; 15 | } 16 | 17 | - (id)smk_requestParameters { 18 | return @{@"q" : @"基础"}; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Src/firstExample/ViewModel/FirstTableViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstTableViewModel.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FirstTableViewModel : NSObject 12 | 13 | - (void)handleWithTable:(UITableView *)table; 14 | 15 | - (void)getDataWithModelArray:(NSArray *(^)())modelArrayBlock completion:(void (^)())completion; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Utils/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Utils/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Utils/Foundation+Log.m: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @implementation NSDictionary (Log) 5 | - (NSString *)descriptionWithLocale:(id)locale 6 | { 7 | NSMutableString *str = [NSMutableString string]; 8 | 9 | [str appendString:@"{\n"]; 10 | 11 | // 遍历字典的所有键值对 12 | [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 13 | [str appendFormat:@"\t%@ = %@,\n", key, obj]; 14 | }]; 15 | 16 | [str appendString:@"}"]; 17 | 18 | // 查出最后一个,的范围 19 | NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch]; 20 | if (range.length != 0) { 21 | // 删掉最后一个, 22 | [str deleteCharactersInRange:range]; 23 | } 24 | 25 | return str; 26 | } 27 | @end 28 | 29 | @implementation NSArray (Log) 30 | - (NSString *)descriptionWithLocale:(id)locale 31 | { 32 | NSMutableString *str = [NSMutableString string]; 33 | 34 | [str appendString:@"[\n"]; 35 | 36 | // 遍历数组的所有元素 37 | [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 38 | [str appendFormat:@"%@,\n", obj]; 39 | }]; 40 | 41 | [str appendString:@"]"]; 42 | 43 | // 查出最后一个,的范围 44 | NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch]; 45 | if (range.length != 0) { 46 | // 删掉最后一个, 47 | [str deleteCharactersInRange:range]; 48 | } 49 | 50 | return str; 51 | } 52 | @end 53 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/Library/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/Library/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/Library/LibraryPublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // LibraryPublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef LibraryPublicHeader_h 10 | #define LibraryPublicHeader_h 11 | 12 | 13 | #endif /* LibraryPublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Classes/Vender/SDKFiles/SDKFilePublicHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // SDKFilePublicHeader.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/6. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef SDKFilePublicHeader_h 10 | #define SDKFilePublicHeader_h 11 | 12 | 13 | #endif /* SDKFilePublicHeader_h */ 14 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | NSAppTransportSecurity 40 | 41 | NSAllowsArbitraryLoads 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /SUIMVVMDemo/SUIMVVMDemo/PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PrefixHeader.pch 3 | // SUIMVVMDemo 4 | // 5 | // Created by RandomSuio on 16/2/20. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef PrefixHeader_pch 10 | #define PrefixHeader_pch 11 | 12 | #import "SUIUtils.h" 13 | #import "SUIMVVMKit.h" 14 | #import "MJExtension.h" 15 | 16 | #endif /* PrefixHeader_pch */ 17 | -------------------------------------------------------------------------------- /SUIMVVMKit.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = 'SUIMVVMKit' 4 | s.version = '0.5.2' 5 | s.summary = 'SUIMVVMKit is a MVVM frameWork easy to develop iOS' 6 | s.homepage = 'https://github.com/lovemo/MVVMFramework' 7 | s.platform = :ios, '7.0' 8 | s.license = 'MIT' 9 | s.author = { 'lovemo' => 'lovemomoyulin@qq.com' } 10 | s.source = { :git => 'https://github.com/lovemo/MVVMFramework.git',:tag => s.version.to_s } 11 | s.requires_arc = true 12 | s.public_header_files = 'SUIMVVMKit/**/*.h' 13 | s.source_files = 'SUIMVVMKit/SUIMVVMKit.h' 14 | s.frameworks = 'CoreFoundation','Foundation','UIKit' 15 | 16 | s.subspec 'SUIMVVMKit' do |ss| 17 | ss.requires_arc = true 18 | ss.library = 'sqlite3' 19 | ss.dependency 'AFNetworking' 20 | ss.dependency 'FMDB' 21 | ss.dependency 'SUIUtils' 22 | ss.source_files = 'SUIMVVMKit/SUIMVVMKit/**/*' 23 | ss.public_header_files = 'SUIMVVMKit/SUIMVVMKit/**/*.h' 24 | end 25 | 26 | end 27 | -------------------------------------------------------------------------------- /SUIMVVMKit/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/SUIMVVMKit/.DS_Store -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUIMVVMKit.h 3 | // MVVMFramework 4 | // 5 | // Created by yuantao on 16/1/21. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #ifndef SUIMVVMKit_h 10 | #define SUIMVVMKit_h 11 | 12 | #import "NSObject+SMKCoding.h" 13 | #import "SMKExtendPublic.h" 14 | #import "SMKAction.h" 15 | #import "SMKConstant.h" 16 | #import "SMKStore.h" 17 | #import "SMKSingleton.h" 18 | #import "SMKRequestProtocol.h" 19 | #import "SMKViewMangerProtocol.h" 20 | #import "SMKViewModelProtocol.h" 21 | #import "SMKViewProtocol.h" 22 | #import "SMKMediator.h" 23 | 24 | #endif /* SUIMVVMKit_h */ 25 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/NSObject+SMKCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+SMKCoding.h 3 | // SMKMVVM 4 | // 5 | // Created by yuantao on 16/4/29. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * SMKCodingProtocol个性化设置archiver协议 13 | */ 14 | @protocol SMKCodingProtocol 15 | 16 | @optional 17 | 18 | /** 19 | * 这个数组中的属性名才会进行归档 20 | */ 21 | + (NSArray *)smk_allowedCodingPropertyNames; 22 | 23 | /** 24 | * 这个数组中的属性名将会被忽略:不进行归档 25 | */ 26 | + (NSArray *)smk_ignoredCodingPropertyNames; 27 | 28 | @end 29 | 30 | 31 | @interface NSObject (SMKCoding) 32 | 33 | /** 34 | * archiver 35 | */ 36 | - (BOOL)smk_writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 37 | 38 | /** 39 | * unarchiver 40 | */ 41 | + (instancetype)smk_objectWithFile:(NSString *)path; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/NSObject+SMKProperties.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+SMKProperties.h 3 | // SMKMVVM 4 | // 5 | // Created by Mac on 16/4/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewProtocol.h" 11 | #import "SMKViewModelProtocol.h" 12 | #import "SMKViewMangerProtocol.h" 13 | #import "SMKMediator.h" 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | /** 18 | * ViewModelBlock 19 | */ 20 | typedef _Nonnull id (^ViewModelBlock)( ); 21 | /** 22 | * ViewMangerInfosBlock 23 | */ 24 | typedef void (^ViewMangerInfosBlock)( ); 25 | /** 26 | * ViewModelInfosBlock 27 | */ 28 | typedef void (^ViewModelInfosBlock)( ); 29 | 30 | 31 | 32 | 33 | @interface NSObject (SMKProperties) 34 | 35 | /** 36 | * viewModelBlock 37 | */ 38 | @property (nonatomic, copy, nonnull) ViewModelBlock viewModelBlock; 39 | 40 | /** 41 | * 获取一个对象的所有属性 42 | */ 43 | - (nullable NSDictionary *)smk_allProperties; 44 | 45 | /** 46 | * viewMangerDelegate 47 | */ 48 | @property (nullable, nonatomic, weak) id viewMangerDelegate; 49 | 50 | /** 51 | * ViewMangerInfosBlock 52 | */ 53 | @property (nonatomic, copy) ViewMangerInfosBlock viewMangerInfosBlock; 54 | 55 | /** 56 | * viewModelDelegate 57 | */ 58 | @property (nullable, nonatomic, weak) id viewModelDelegate; 59 | 60 | /** 61 | * ViewModelInfosBlock 62 | */ 63 | @property (nonatomic, copy) ViewModelInfosBlock viewModelInfosBlock; 64 | 65 | /** 66 | * mediator 67 | */ 68 | @property (nonatomic, strong) SMKMediator *smk_mediator; 69 | 70 | /** 71 | * smk_viewMangerInfos 72 | */ 73 | @property (nonatomic, copy) NSDictionary *smk_viewMangerInfos; 74 | 75 | /** 76 | * smk_viewModelInfos 77 | */ 78 | @property (nonatomic, copy) NSDictionary *smk_viewModelInfos; 79 | 80 | @end 81 | 82 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/NSObject+SMKRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+SMKRequest.h 3 | // SMKMVVM 4 | // 5 | // Created by yuantao on 16/4/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKRequestProtocol.h" 11 | 12 | typedef enum : NSUInteger { 13 | /** GET */ 14 | SMKRequestMethodGET, 15 | /** POST */ 16 | SMKRequestMethodPOST, 17 | /** UPLOAD */ 18 | SMKRequestMethodUPLOAD, 19 | /** DOWNLOAD */ 20 | SMKRequestMethodDOWNLOAD 21 | 22 | } SMKRequestMethod; 23 | 24 | 25 | @class SMKRequestFileConfig; 26 | @interface NSObject (SMKRequest) 27 | 28 | /** 29 | * scheme (eg: http, https, ftp) 30 | */ 31 | @property (nonatomic, copy, nonnull) NSString *smk_scheme; 32 | 33 | /** 34 | * host 35 | */ 36 | @property (nonatomic, copy, nonnull) NSString *smk_host; 37 | 38 | /** 39 | * path 40 | */ 41 | @property (nonatomic, copy, nonnull) NSString *smk_path; 42 | 43 | /** 44 | * method 45 | */ 46 | @property (nonatomic, assign) SMKRequestMethod smk_method; 47 | 48 | /** 49 | * url (如果设置了url,则不需要在设置scheme,host,path 属性) 50 | */ 51 | @property (nonatomic, copy, nonnull) NSString *smk_url; 52 | 53 | /** 54 | * parameters 55 | */ 56 | @property (nonatomic, retain, nonnull) id smk_params; 57 | 58 | /** 59 | * fileConfig 60 | */ 61 | @property (nonatomic, retain, nonnull) SMKRequestFileConfig *smk_fileConfig; 62 | 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKConstant.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKConstant.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/2/29. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef SMKConstant_h 10 | #define SMKConstant_h 11 | 12 | // 过期提醒 13 | #define SMKDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) 14 | 15 | #endif /* SMKConstant_h */ 16 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKExtendPublic.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKExtend.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/2/22. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #ifndef SMKExtendPublic_h 10 | #define SMKExtendPublic_h 11 | 12 | #import "NSObject+SMKProperties.h" 13 | #import "NSObject+SMKRequest.h" 14 | #import "UICollectionViewCell+SMKConfigure.h" 15 | #import "UITableViewCell+SMKConfigure.h" 16 | #import "UIView+SMKConfigure.h" 17 | #import "UIView+SMKEvents.h" 18 | 19 | #endif /* SMKExtendPublic_h */ 20 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKMediator.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKMediator.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/15. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewModelProtocol.h" 11 | #import "SMKViewMangerProtocol.h" 12 | 13 | @interface SMKMediator : NSObject 14 | 15 | /** 16 | * viewModel 17 | */ 18 | @property (nonatomic, strong) NSObject *viewModel; 19 | 20 | /** 21 | * viewManger 22 | */ 23 | @property (nonatomic, strong) NSObject *viewManger; 24 | 25 | /** 26 | * 初始化 27 | */ 28 | - (instancetype)initWithViewModel:(id)viewModel viewManger:(id)viewManger; 29 | 30 | + (instancetype)mediatorWithViewModel:(id)viewModel viewManger:(id)viewManger; 31 | 32 | /** 33 | * 将infos通知viewModel 34 | */ 35 | - (void)noticeViewModelWithInfos:(NSDictionary *)infos; 36 | 37 | /** 38 | * 将infos通知viewMnager 39 | */ 40 | - (void)noticeViewMangerWithInfos:(NSDictionary *)infos; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKMediator.m: -------------------------------------------------------------------------------- 1 | // 2 | // SMKMediator.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/15. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import "SMKMediator.h" 10 | #import "NSObject+SMKProperties.h" 11 | 12 | 13 | @implementation SMKMediator 14 | 15 | - (instancetype)initWithViewModel:(id)viewModel viewManger:(id)viewManger { 16 | if (self = [super init]) { 17 | self.viewModel = (NSObject *)viewModel; 18 | self.viewManger = (NSObject *)viewManger; 19 | } 20 | return self; 21 | } 22 | 23 | + (instancetype)mediatorWithViewModel:(id)viewModel viewManger:(id)viewManger { 24 | return [[self alloc]initWithViewModel:viewModel viewManger:viewManger]; 25 | } 26 | 27 | - (void)noticeViewModelWithInfos:(NSDictionary *)infos { 28 | self.viewModel.smk_viewModelInfos = infos; 29 | } 30 | 31 | - (void)noticeViewMangerWithInfos:(NSDictionary *)infos { 32 | self.viewManger.smk_viewMangerInfos = infos; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKRequestProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKRequestProtocol.h 3 | // SMKMVVM 4 | // 5 | // Created by yuantao on 16/4/7. 6 | // Copyright © 2016年 momo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol SMKRequestProtocol 12 | 13 | @optional 14 | 15 | /** 16 | * 配置request请求参数 17 | * 18 | * @return NSDictionary 或者 自定义参数模型 19 | */ 20 | - (id)smk_requestParameters; 21 | 22 | /** 23 | * 配置request的路径、请求参数等 24 | */ 25 | - (void)smk_requestConfigures; 26 | 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKSingleton.h: -------------------------------------------------------------------------------- 1 | // .h文件 2 | #define SMKSingletonH(name) + (instancetype)shared##name; 3 | 4 | // .m文件 5 | #if __has_feature(objc_arc) 6 | 7 | #define SMKSingletonM(name) \ 8 | static id _instace; \ 9 | \ 10 | + (id)allocWithZone:(struct _NSZone *)zone \ 11 | { \ 12 | static dispatch_once_t onceToken; \ 13 | dispatch_once(&onceToken, ^{ \ 14 | _instace = [super allocWithZone:zone]; \ 15 | }); \ 16 | return _instace; \ 17 | } \ 18 | \ 19 | + (instancetype)shared##name \ 20 | { \ 21 | static dispatch_once_t onceToken; \ 22 | dispatch_once(&onceToken, ^{ \ 23 | _instace = [[self alloc] init]; \ 24 | }); \ 25 | return _instace; \ 26 | } \ 27 | \ 28 | - (id)copyWithZone:(NSZone *)zone \ 29 | { \ 30 | return _instace; \ 31 | } 32 | 33 | #else 34 | 35 | #define SMKSingletonM(name) \ 36 | static id _instace; \ 37 | \ 38 | + (id)allocWithZone:(struct _NSZone *)zone \ 39 | { \ 40 | static dispatch_once_t onceToken; \ 41 | dispatch_once(&onceToken, ^{ \ 42 | _instace = [super allocWithZone:zone]; \ 43 | }); \ 44 | return _instace; \ 45 | } \ 46 | \ 47 | + (instancetype)shared##name \ 48 | { \ 49 | static dispatch_once_t onceToken; \ 50 | dispatch_once(&onceToken, ^{ \ 51 | _instace = [[self alloc] init]; \ 52 | }); \ 53 | return _instace; \ 54 | } \ 55 | \ 56 | - (id)copyWithZone:(NSZone *)zone \ 57 | { \ 58 | return _instace; \ 59 | } \ 60 | \ 61 | - (oneway void)release { } \ 62 | - (id)retain { return self; } \ 63 | - (NSUInteger)retainCount { return 1;} \ 64 | - (id)autorelease { return self;} 65 | 66 | #endif -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKViewModelProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKViewModelProtocol.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/4/8. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | /** 13 | * 请求成功block 14 | */ 15 | typedef void (^successBlock)(id responseObject); 16 | /** 17 | * 请求失败block 18 | */ 19 | typedef void (^failureBlock) (NSError *error); 20 | /** 21 | * 请求响应block 22 | */ 23 | typedef void (^responseBlock)(id dataObj, NSError *error); 24 | /** 25 | * 监听进度响应block 26 | */ 27 | typedef void (^progressBlock)(NSProgress * progress); 28 | /** 29 | * 将自己的信息返回给ViewManger的block 30 | */ 31 | typedef void (^ViewMangerInfosBlock)( ); 32 | /** 33 | * 将自己的信息返回给ViewModel的block 34 | */ 35 | typedef void (^ViewModelInfosBlock)( ); 36 | 37 | 38 | @protocol SMKViewModelProtocol 39 | 40 | @optional 41 | 42 | 43 | - (void)smk_notice; 44 | 45 | /** 46 | * 返回指定viewModel的所引用的控制器 47 | */ 48 | - (void)smk_viewModelWithViewController:(UIViewController *)viewController; 49 | 50 | /** 51 | * 加载数据 52 | */ 53 | - (NSURLSessionTask *)smk_viewModelWithProgress:(progressBlock)progress success:(successBlock)success failure:(failureBlock)failure; 54 | 55 | /** 56 | * 传递模型给view 57 | */ 58 | - (void)smk_viewModelWithModelBlcok:(void (^)(id model))modelBlock; 59 | 60 | /** 61 | * 处理ViewMangerInfosBlock 62 | */ 63 | - (ViewMangerInfosBlock)smk_viewModelWithViewMangerBlockOfInfos:(NSDictionary *)infos; 64 | 65 | /** 66 | * 处理ViewModelInfosBlock 67 | */ 68 | - (ViewModelInfosBlock)smk_viewModelWithOtherViewModelBlockOfInfos:(NSDictionary *)infos; 69 | 70 | /** 71 | * 将viewModel中的信息通过代理传递给ViewManger 72 | * 73 | * @param viewModel viewModel自己 74 | * @param infos 描述信息 75 | */ 76 | - (void)smk_viewModel:(id)viewModel withInfos:(NSDictionary *)infos; 77 | 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/SMKViewProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SMKViewProtocol.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/5. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | 10 | #import 11 | 12 | @protocol SMKViewProtocol 13 | 14 | @optional 15 | 16 | /** 17 | * 将view中的事件通过代理传递出去 18 | * 19 | * @param view view自己 20 | * @param events 所触发事件的一些描述信息 21 | */ 22 | - (void)smk_view:(__kindof UIView *)view withEvents:(NSDictionary *)events; 23 | 24 | 25 | @end 26 | 27 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UICollectionViewCell+SMKConfigure.h: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionViewCell+SMKConfigure.h 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/16. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewModelProtocol.h" 11 | 12 | @interface UICollectionViewCell (SMKConfigure) 13 | 14 | /** 15 | * 从nib文件中根据重用标识符注册UICollectionViewcell 16 | */ 17 | + (void)smk_registerCollect:(UICollectionView *)collect 18 | nibIdentifier:(NSString *)identifier; 19 | 20 | /** 21 | * 从class根据重用标识符注册UICollectionViewcell 22 | */ 23 | + (void)smk_registerCollect:(UICollectionView *)collect 24 | classIdentifier:(NSString *)identifier; 25 | 26 | /** 27 | * 根据model配置UICollectionViewcell,设置UICollectionViewcell内容 28 | */ 29 | - (void)smk_configure:(UICollectionViewCell *)cell 30 | model:(id)model 31 | indexPath:(NSIndexPath *)indexPath; 32 | 33 | /** 34 | * 根据viewModel配置UICollectionViewcell,设置UICollectionViewcell内容 35 | */ 36 | - (void)smk_configure:(UICollectionViewCell *)cell 37 | viewModel:(id)viewModel 38 | indexPath:(NSIndexPath *)indexPath; 39 | 40 | /** 41 | * 获取自定义对象的cell高度 42 | */ 43 | + (CGFloat)smk_getCellHeightWithModel:(id)model 44 | indexPath:(NSIndexPath *)indexPath; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UICollectionViewCell+SMKConfigure.m: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionViewCell+SMKConfigure.m 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/16. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import "UICollectionViewCell+SMKConfigure.h" 10 | 11 | @implementation UICollectionViewCell (SMKConfigure) 12 | 13 | #pragma mark -- 14 | + (UINib *)nibWithIdentifier:(NSString *)identifier 15 | { 16 | return [UINib nibWithNibName:identifier bundle:nil]; 17 | } 18 | 19 | #pragma mark - Public 20 | + (void)smk_registerCollect:(UICollectionView *)collect 21 | nibIdentifier:(NSString *)identifier 22 | { 23 | [collect registerNib:[self nibWithIdentifier:identifier] forCellWithReuseIdentifier:identifier]; 24 | } 25 | 26 | + (void)smk_registerCollect:(UICollectionView *)collect classIdentifier:(NSString *)identifier { 27 | [collect registerClass:[self class] forCellWithReuseIdentifier:identifier]; 28 | } 29 | 30 | #pragma mark -- 31 | #pragma mark - Rewrite these func in SubClass ! 32 | - (void)smk_configure:(UICollectionViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath 33 | { 34 | // Rewrite this func in SubClass ! 35 | } 36 | 37 | - (void)smk_configure:(UICollectionViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath 38 | { 39 | // Rewrite this func in SubClass ! 40 | } 41 | 42 | + (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath 43 | { 44 | // Rewrite this func in SubClass if necessary 45 | if (!model) { 46 | return 0.0f ; // if obj is null . 47 | } 48 | return 44.0f ; // default cell height 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UITableViewCell+SMKConfigure.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SMKConfigure.h 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/16. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewModelProtocol.h" 11 | 12 | @interface UITableViewCell (SMKConfigure) 13 | 14 | /** 15 | * 从nib文件中根据重用标识符注册UITableViewCell 16 | */ 17 | + (void)smk_registerTable:(UITableView *)table 18 | nibIdentifier:(NSString *)identifier; 19 | 20 | /** 21 | * 从class中根据重用标识符注册UITableViewCell 22 | */ 23 | + (void)smk_registerTable:(UITableView *)table 24 | classIdentifier:(NSString *)identifier; 25 | 26 | /** 27 | * 根据model配置UITableViewCell,设置UITableViewCell内容 28 | */ 29 | - (void)smk_configure:(UITableViewCell *)cell 30 | model:(id)model 31 | indexPath:(NSIndexPath *)indexPath; 32 | 33 | /** 34 | * 根据viewModel配置UITableViewCell,设置UITableViewCell内容 35 | */ 36 | - (void)smk_configure:(UITableViewCell *)cell 37 | viewModel:(id)viewModel 38 | indexPath:(NSIndexPath *)indexPath; 39 | 40 | /** 41 | * 获取自定义对象的cell高度 (已集成UITableView+FDTemplateLayoutCell,现在创建的cell自动计算高度) 42 | */ 43 | + (CGFloat)smk_getCellHeightWithModel:(id)model 44 | indexPath:(NSIndexPath *)indexPath ; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UITableViewCell+SMKConfigure.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+SMKConfigure.m 3 | // DevelopFramework 4 | // 5 | // Created by momo on 15/12/16. 6 | // Copyright © 2015年 teason. All rights reserved. 7 | // 8 | 9 | #import "UITableViewCell+SMKConfigure.h" 10 | 11 | @implementation UITableViewCell (SMKConfigure) 12 | 13 | #pragma mark -- private 14 | + (UINib *)nibWithIdentifier:(NSString *)identifier 15 | { 16 | return [UINib nibWithNibName:identifier bundle:nil]; 17 | } 18 | 19 | #pragma mark - public 20 | + (void)smk_registerTable:(UITableView *)table 21 | nibIdentifier:(NSString *)identifier 22 | { 23 | [table registerNib:[self nibWithIdentifier:identifier] forCellReuseIdentifier:identifier]; 24 | } 25 | + (void)smk_registerTable:(UITableView *)table 26 | classIdentifier:(NSString *)identifier 27 | { 28 | [table registerClass:[self class] forCellReuseIdentifier:identifier]; 29 | } 30 | #pragma mark -- 31 | #pragma mark - Rewrite these func in SubClass ! 32 | - (void)smk_configure:(UITableViewCell *)cell model:(id)model indexPath:(NSIndexPath *)indexPath 33 | { 34 | // Rewrite this func in SubClass ! 35 | } 36 | 37 | - (void)smk_configure:(UITableViewCell *)cell viewModel:(id)viewModel indexPath:(NSIndexPath *)indexPath 38 | { 39 | // Rewrite this func in SubClass ! 40 | } 41 | 42 | + (CGFloat)smk_getCellHeightWithModel:(id)model indexPath:(NSIndexPath *)indexPath 43 | { 44 | // Rewrite this func in SubClass if necessary 45 | if (!model) { 46 | return 0.0f ; // if obj is null . 47 | } 48 | return 44.0f ; // default cell height 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UIView+SMKConfigure.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SMKConfigure.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/2/22. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewModelProtocol.h" 11 | 12 | @interface UIView (SMKConfigure) 13 | 14 | /** 15 | * 根据model配置UIView,设置UIView内容 16 | */ 17 | - (void)smk_configureViewWithModel:(id)model; 18 | 19 | /** 20 | * 根据viewModel配置UIView,设置UIView内容 21 | */ 22 | - (void)smk_configureViewWithViewModel:(id)viewModel; 23 | 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UIView+SMKConfigure.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SMKConfigure.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/2/22. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import "UIView+SMKConfigure.h" 10 | 11 | @implementation UIView (SMKConfigure) 12 | 13 | #pragma mark -- 14 | #pragma mark - Rewrite these func in SubClass ! 15 | 16 | - (void)smk_configureViewWithModel:(id)model { 17 | // Rewrite this func in SubClass ! 18 | } 19 | 20 | - (void)smk_configureViewWithViewModel:(id)viewModel { 21 | // Rewrite this func in SubClass ! 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UIView+SMKEvents.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SMKEvents.h 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/5. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SMKViewProtocol.h" 11 | #import "SMKViewMangerProtocol.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | typedef void (^ViewEventsBlock)( ); 16 | 17 | @interface UIView (SMKEvents) 18 | 19 | /** 20 | * viewDelegate 传递事件 21 | */ 22 | @property (nullable, nonatomic, weak) id viewDelegate; 23 | 24 | /** 25 | * block 传递事件 26 | */ 27 | @property (nonatomic, copy) ViewEventsBlock viewEventsBlock; 28 | 29 | /** 30 | * 将view中的事件交由viewManger处理 31 | */ 32 | - (void)smk_viewWithViewManger:(id)viewManger; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | 38 | -------------------------------------------------------------------------------- /SUIMVVMKit/SUIMVVMKit/UIView+SMKEvents.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SMKEvents.m 3 | // SUIMVVMDemo 4 | // 5 | // Created by yuantao on 16/3/5. 6 | // Copyright © 2016年 lovemo. All rights reserved. 7 | // 8 | 9 | #import "UIView+SMKEvents.h" 10 | #import 11 | 12 | @implementation UIView (SMKEvents) 13 | 14 | - (id)viewDelegate { 15 | return objc_getAssociatedObject(self, _cmd); 16 | } 17 | 18 | - (void)setViewDelegate:(id)viewDelegate { 19 | objc_setAssociatedObject(self, @selector(viewDelegate), viewDelegate, OBJC_ASSOCIATION_ASSIGN); 20 | } 21 | 22 | - (ViewEventsBlock)viewEventsBlock { 23 | return objc_getAssociatedObject(self, @selector(viewEventsBlock)); 24 | } 25 | 26 | - (void)setViewEventsBlock:(ViewEventsBlock)viewEventsBlock { 27 | objc_setAssociatedObject(self, @selector(viewEventsBlock), viewEventsBlock, OBJC_ASSOCIATION_COPY); 28 | } 29 | 30 | - (void)smk_viewWithViewManger:(id)viewManger { 31 | if (viewManger) { 32 | self.viewDelegate = viewManger; 33 | } 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/.DS_Store -------------------------------------------------------------------------------- /resources/MVVM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/MVVM.png -------------------------------------------------------------------------------- /resources/MVVM@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/MVVM@2x.png -------------------------------------------------------------------------------- /resources/MVVM@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/MVVM@3x.png -------------------------------------------------------------------------------- /resources/MVVMFrameWork-Thinking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/MVVMFrameWork-Thinking.png -------------------------------------------------------------------------------- /resources/MVVMFrameWork-Thinking2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/MVVMFrameWork-Thinking2.jpeg -------------------------------------------------------------------------------- /resources/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/demo.gif -------------------------------------------------------------------------------- /resources/directory_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/directory_tree.png -------------------------------------------------------------------------------- /resources/img1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/img1.jpeg -------------------------------------------------------------------------------- /resources/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/screenshot.png -------------------------------------------------------------------------------- /resources/tree.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/resources/tree.jpeg -------------------------------------------------------------------------------- /source/MVVM.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lovemo/MVVMFramework/d0364184833a3828636b8347d78c9f543a8987b8/source/MVVM.md --------------------------------------------------------------------------------