diff --git a/AsyncUITableview.xcodeproj/project.pbxproj b/AsyncUITableview.xcodeproj/project.pbxproj index dbc4f26..3e90fd3 100644 --- a/AsyncUITableview.xcodeproj/project.pbxproj +++ b/AsyncUITableview.xcodeproj/project.pbxproj @@ -211,7 +211,9 @@ 8DA65D6C198E3F71005EE11F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Jigar M"; TargetAttributes = { 8DA65D73198E3F71005EE11F = { @@ -340,6 +342,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -406,6 +409,7 @@ INFOPLIST_FILE = AsyncUITableview/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -419,6 +423,7 @@ INFOPLIST_FILE = AsyncUITableview/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -438,6 +443,7 @@ INFOPLIST_FILE = AsyncUITableviewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -454,6 +460,7 @@ INFOPLIST_FILE = AsyncUITableviewTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.jigarm.InfiniteScroll; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme new file mode 100644 index 0000000..c56555c --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/AsyncUITableview.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..db41387 --- /dev/null +++ b/AsyncUITableview.xcodeproj/xcuserdata/yurijmi.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + AsyncUITableview.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8DA65D73198E3F71005EE11F + + primary + + + 8DA65D85198E3F71005EE11F + + primary + + + + + diff --git a/AsyncUITableview/AppDelegate.swift b/AsyncUITableview/AppDelegate.swift index deea2b6..12f959f 100644 --- a/AsyncUITableview/AppDelegate.swift +++ b/AsyncUITableview/AppDelegate.swift @@ -12,9 +12,8 @@ import UIKit class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - - - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/AsyncUITableview/Base.lproj/Main.storyboard b/AsyncUITableview/Base.lproj/Main.storyboard index cc72477..1471e31 100644 --- a/AsyncUITableview/Base.lproj/Main.storyboard +++ b/AsyncUITableview/Base.lproj/Main.storyboard @@ -1,45 +1,55 @@ - + - + + - + + - + + + - + + + + + + @@ -72,6 +82,7 @@ + diff --git a/AsyncUITableview/Info.plist b/AsyncUITableview/Info.plist index cc0cf01..40a3f08 100644 --- a/AsyncUITableview/Info.plist +++ b/AsyncUITableview/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.jigarm.InfiniteScroll + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/AsyncUITableview/MyTableViewCell.swift b/AsyncUITableview/MyTableViewCell.swift index a5b6bce..20a60ff 100644 --- a/AsyncUITableview/MyTableViewCell.swift +++ b/AsyncUITableview/MyTableViewCell.swift @@ -10,6 +10,6 @@ import UIKit class MyTableViewCell: UITableViewCell { - @IBOutlet var img : UIImageView - @IBOutlet var lbl : UILabel + @IBOutlet var img : UIImageView! + @IBOutlet var lbl : UILabel! } diff --git a/AsyncUITableview/MyTableViewController.swift b/AsyncUITableview/MyTableViewController.swift index db24810..f7cd143 100644 --- a/AsyncUITableview/MyTableViewController.swift +++ b/AsyncUITableview/MyTableViewController.swift @@ -12,9 +12,9 @@ import Foundation class MyTableViewController: UITableViewController { let PageSize = 20 - var items:MyItem[] = [] + var items = [MyItem]() var isLoading = false - @IBOutlet var MyFooterView : UIView + @IBOutlet var MyFooterView : UIView! override func viewDidLoad() { super.viewDidLoad() @@ -25,7 +25,7 @@ class MyTableViewController: UITableViewController { return From + Int(arc4random_uniform(UInt32(To - From + 1))) } - class MyItem : Printable { + class MyItem : CustomStringConvertible { let name:String! init(name:String) { @@ -38,7 +38,7 @@ class MyTableViewController: UITableViewController { } class DataManager { - func requestData(offset:Int, size:Int, listener:(MyItem[]) -> ()) { + func requestData(offset:Int, size:Int, listener:([MyItem]) -> ()) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { //Sleep the Process @@ -47,12 +47,12 @@ class MyTableViewController: UITableViewController { } //generate items - var arr:MyItem[] = [] + var arr = [MyItem]() for i in offset...(offset + size) { - arr += MyItem(name: "Item " + String(i)) + arr.append(MyItem(name: "Item " + String(i))) } - println(arr) + print(arr) //call listener in main thread dispatch_async(dispatch_get_main_queue()) { @@ -65,11 +65,11 @@ class MyTableViewController: UITableViewController { func loadSegment(offset:Int, size:Int) { if (!self.isLoading) { self.isLoading = true - self.MyFooterView.hidden = (offset==0) ? true : false + self.MyFooterView!.hidden = (offset==0) ? true : false let manager = DataManager() manager.requestData(offset, size: size, - listener: {(items:MyTableViewController.MyItem[]) -> () in + listener: {(items:[MyTableViewController.MyItem]) -> () in /* //You can also Reload all the Data using below code. @@ -77,7 +77,7 @@ class MyTableViewController: UITableViewController { //Instead of Reloading Table data, you can add 20 rows when table scroll is at end positoon for item in items { - self.items += item + self.items.append(item) } self.tableView.reloadData() self.isLoading = false @@ -90,9 +90,9 @@ class MyTableViewController: UITableViewController { Add Rows at indexpath */ for item in items { - var row = self.items.count - var indexPath = NSIndexPath(forRow:row,inSection:0) - self.items += item + let row = self.items.count + let indexPath = NSIndexPath(forRow:row,inSection:0) + self.items.append(item) self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) } self.isLoading = false @@ -102,9 +102,9 @@ class MyTableViewController: UITableViewController { } } - override func scrollViewDidScroll(scrollView: UIScrollView!) { - var offset = scrollView.contentOffset.y - var maxOffset = scrollView.contentSize.height - scrollView.frame.size.height + override func scrollViewDidScroll(scrollView: UIScrollView) { + let offset = scrollView.contentOffset.y + let maxOffset = scrollView.contentSize.height - scrollView.frame.size.height if (maxOffset - offset) <= 40 { loadSegment(items.count, size: PageSize-1) } @@ -117,16 +117,16 @@ class MyTableViewController: UITableViewController { override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { return items.count } - override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat { + override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 85; } - override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? { - let cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MyTableViewCell - + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MyTableViewCell + //Configure the cell... - var imagename = UTILITY.getRandomNumberBetween(1, To: 10).description + ".png" - cell.img.image = UIImage(named:imagename) as UIImage - cell.lbl.text = items[indexPath.row].name as String + let imagename = UTILITY.getRandomNumberBetween(1, To: 10).description + ".png" + cell.img.image = UIImage(named:imagename) + cell.lbl.text = items[indexPath.row].name return cell } } diff --git a/AsyncUITableviewTests/Info.plist b/AsyncUITableviewTests/Info.plist index cd161ce..ca8b878 100644 --- a/AsyncUITableviewTests/Info.plist +++ b/AsyncUITableviewTests/Info.plist @@ -7,9 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.jigarm.InfiniteScroll - LSApplicationCategoryType - + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -22,5 +20,7 @@ ???? CFBundleVersion 1 + LSApplicationCategoryType + diff --git a/README.md b/README.md index 80da43d..1ad211c 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Infinite Scroll Indicator : ============================ # Require -OSX 10.9.3 and Xcode 6.x (beta for now) +OSX 10.10+ and Xcode 7+ # Swift ===========