Swift 4: Pagination using data from an array to make API call as user scrolls Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceHow to know when UITableView did scroll to bottom in iPhoneFirestore listener is fetching more data than the number of documents that existsHow do I make calls to a REST api using C#?How to call Objective-C code from SwiftHow to remove an element from an array in SwiftMake REST API call in SwiftArray from dictionary keys in swiftXcode iOS UITableView Insert New Cell AnimationUpdate or reload UITableView after completion of delete action on detail viewError when deleting row from UITableViewShow wrong images in UICollectionViewRefresh tableView without call willDisplay in Swift
How should I respond to a player wanting to catch a sword between their hands?
What's the difference between (size_t)-1 and ~0?
Communication vs. Technical skills ,which is more relevant for today's QA engineer positions?
Replacing HDD with SSD; what about non-APFS/APFS?
Mortgage adviser recommends a longer term than necessary combined with overpayments
If I can make up priors, why can't I make up posteriors?
How can I make names more distinctive without making them longer?
Complexity of many constant time steps with occasional logarithmic steps
Active filter with series inductor and resistor - do these exist?
What LEGO pieces have "real-world" functionality?
Are my PIs rude or am I just being too sensitive?
What items from the Roman-age tech-level could be used to deter all creatures from entering a small area?
Windows 10: How to Lock (not sleep) laptop on lid close?
Need a suitable toxic chemical for a murder plot in my novel
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
What would be Julian Assange's expected punishment, on the current English criminal law?
Statistical model of ligand substitution
Array/tabular for long multiplication
Can a zero nonce be safely used with AES-GCM if the key is random and never used again?
Is there a documented rationale why the House Ways and Means chairman can demand tax info?
What's the point in a preamp?
Can the prologue be the backstory of your main character?
Can smartphones with the same camera sensor have different image quality?
Why use gamma over alpha radiation?
Swift 4: Pagination using data from an array to make API call as user scrolls
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceHow to know when UITableView did scroll to bottom in iPhoneFirestore listener is fetching more data than the number of documents that existsHow do I make calls to a REST api using C#?How to call Objective-C code from SwiftHow to remove an element from an array in SwiftMake REST API call in SwiftArray from dictionary keys in swiftXcode iOS UITableView Insert New Cell AnimationUpdate or reload UITableView after completion of delete action on detail viewError when deleting row from UITableViewShow wrong images in UICollectionViewRefresh tableView without call willDisplay in Swift
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
Background
In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.
I’m using a Firestore database to store the object IDs on my end.
Current Implementation
Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.
- Get object IDs to be used for making API calls
var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0
override func viewDidLoad()
super.viewDidload()
getObjectIds()
func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection
return chunkedObjectIds
// when finished, get the first 10 objects from the 3rd party API
fetchObjects()
- Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10
func fetchObjects()
// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here
// request the objects for the first 10 ID numbers
Alamofire.request(… parameter with first 10 object ids …) (objects) in
// save objects
// increment the offset
offset += 1
Render the data on the UITableView cells
Use the following method to load more data from the 3rd party API:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
let lastRow = objects.count
var parameters = [String: Any]()
if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)
// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")
Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)
self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1
Adding or deleting objects:
- The object ID is added or deleted from the Firestore database
- The objectIds, chunkedObjectIds, offset and objects are cleared
- The listener triggers a read of the data and the process repeats
The Issue & Question
This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.
Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.
Edit
I have changed the implementation based on feedback in the comments. So now, the process is like this:
- Setup listener to get data from Firestore
- Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions
- Fetch the objects from the 3rd party API
- I kept using
willDisplay cell
method to trigger more data to load - it seemed to work more reliably thanscrollDidEnd
method.
So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.
ios arrays swift api uitableview
|
show 1 more comment
Background
In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.
I’m using a Firestore database to store the object IDs on my end.
Current Implementation
Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.
- Get object IDs to be used for making API calls
var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0
override func viewDidLoad()
super.viewDidload()
getObjectIds()
func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection
return chunkedObjectIds
// when finished, get the first 10 objects from the 3rd party API
fetchObjects()
- Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10
func fetchObjects()
// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here
// request the objects for the first 10 ID numbers
Alamofire.request(… parameter with first 10 object ids …) (objects) in
// save objects
// increment the offset
offset += 1
Render the data on the UITableView cells
Use the following method to load more data from the 3rd party API:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
let lastRow = objects.count
var parameters = [String: Any]()
if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)
// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")
Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)
self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1
Adding or deleting objects:
- The object ID is added or deleted from the Firestore database
- The objectIds, chunkedObjectIds, offset and objects are cleared
- The listener triggers a read of the data and the process repeats
The Issue & Question
This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.
Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.
Edit
I have changed the implementation based on feedback in the comments. So now, the process is like this:
- Setup listener to get data from Firestore
- Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions
- Fetch the objects from the 3rd party API
- I kept using
willDisplay cell
method to trigger more data to load - it seemed to work more reliably thanscrollDidEnd
method.
So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.
ios arrays swift api uitableview
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate functionscrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach
– Awais Fayyaz
Mar 22 at 7:17
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
1
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back toWillDisplay cell
- I felt it works slightly better.
– KeepTryingMike
Mar 23 at 3:31
|
show 1 more comment
Background
In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.
I’m using a Firestore database to store the object IDs on my end.
Current Implementation
Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.
- Get object IDs to be used for making API calls
var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0
override func viewDidLoad()
super.viewDidload()
getObjectIds()
func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection
return chunkedObjectIds
// when finished, get the first 10 objects from the 3rd party API
fetchObjects()
- Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10
func fetchObjects()
// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here
// request the objects for the first 10 ID numbers
Alamofire.request(… parameter with first 10 object ids …) (objects) in
// save objects
// increment the offset
offset += 1
Render the data on the UITableView cells
Use the following method to load more data from the 3rd party API:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
let lastRow = objects.count
var parameters = [String: Any]()
if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)
// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")
Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)
self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1
Adding or deleting objects:
- The object ID is added or deleted from the Firestore database
- The objectIds, chunkedObjectIds, offset and objects are cleared
- The listener triggers a read of the data and the process repeats
The Issue & Question
This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.
Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.
Edit
I have changed the implementation based on feedback in the comments. So now, the process is like this:
- Setup listener to get data from Firestore
- Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions
- Fetch the objects from the 3rd party API
- I kept using
willDisplay cell
method to trigger more data to load - it seemed to work more reliably thanscrollDidEnd
method.
So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.
ios arrays swift api uitableview
Background
In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.
I’m using a Firestore database to store the object IDs on my end.
Current Implementation
Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.
- Get object IDs to be used for making API calls
var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0
override func viewDidLoad()
super.viewDidload()
getObjectIds()
func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection
return chunkedObjectIds
// when finished, get the first 10 objects from the 3rd party API
fetchObjects()
- Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10
func fetchObjects()
// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here
// request the objects for the first 10 ID numbers
Alamofire.request(… parameter with first 10 object ids …) (objects) in
// save objects
// increment the offset
offset += 1
Render the data on the UITableView cells
Use the following method to load more data from the 3rd party API:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
let lastRow = objects.count
var parameters = [String: Any]()
if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)
// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")
Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)
self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1
Adding or deleting objects:
- The object ID is added or deleted from the Firestore database
- The objectIds, chunkedObjectIds, offset and objects are cleared
- The listener triggers a read of the data and the process repeats
The Issue & Question
This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.
Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.
Edit
I have changed the implementation based on feedback in the comments. So now, the process is like this:
- Setup listener to get data from Firestore
- Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions
- Fetch the objects from the 3rd party API
- I kept using
willDisplay cell
method to trigger more data to load - it seemed to work more reliably thanscrollDidEnd
method.
So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.
ios arrays swift api uitableview
ios arrays swift api uitableview
edited Mar 23 at 3:29
KeepTryingMike
asked Mar 22 at 6:58
KeepTryingMikeKeepTryingMike
165
165
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate functionscrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach
– Awais Fayyaz
Mar 22 at 7:17
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
1
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back toWillDisplay cell
- I felt it works slightly better.
– KeepTryingMike
Mar 23 at 3:31
|
show 1 more comment
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate functionscrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach
– Awais Fayyaz
Mar 22 at 7:17
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
1
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back toWillDisplay cell
- I felt it works slightly better.
– KeepTryingMike
Mar 23 at 3:31
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function
scrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach– Awais Fayyaz
Mar 22 at 7:17
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function
scrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach– Awais Fayyaz
Mar 22 at 7:17
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
1
1
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to
WillDisplay cell
- I felt it works slightly better.– KeepTryingMike
Mar 23 at 3:31
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to
WillDisplay cell
- I felt it works slightly better.– KeepTryingMike
Mar 23 at 3:31
|
show 1 more comment
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55294398%2fswift-4-pagination-using-data-from-an-array-to-make-api-call-as-user-scrolls%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55294398%2fswift-4-pagination-using-data-from-an-array-to-make-api-call-as-user-scrolls%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?
– Sachin Vas
Mar 22 at 7:11
try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function
scrollViewDidEndDragging
for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach– Awais Fayyaz
Mar 22 at 7:17
github.com/alfianlosari/SWPaginationIOS , i have try it
– Puji Wahono
Mar 22 at 7:58
@SachinVas I ended up using that method instead, it's a much better way! Thanks.
– KeepTryingMike
Mar 23 at 3:30
1
@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to
WillDisplay cell
- I felt it works slightly better.– KeepTryingMike
Mar 23 at 3:31