Reputation: 3037
I need delete row 1 of a table in a function I have defined. In order to use deleteRowAtIndexPath
you must use an IndexPath
with a section and row defined. How can I create an indexpath like this?
An array with the int {1} as its only member will crash; the NSLog message states that the section needs to be defined as well.
*Edit -> Code relating to cell delete:
NSIndexPath *myIP = [[NSIndexPath alloc] indexPathForRow:0 inSection:0];
NSArray *myArray = [[NSArray alloc] initWithObjects:myIP, nil];
// [self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:myArray withRowAnimation:UITableViewRowAnimationFade];
// [self.tableView endUpdates];
Upvotes: 249
Views: 205542
Reputation: 85542
Use [NSIndexPath indexPathForRow:inSection:]
to quickly create an index path.
Edit: In Swift 3:
let indexPath = IndexPath(row: rowIndex, section: sectionIndex)
Swift 5
IndexPath(row: 0, section: 0)
Upvotes: 648
Reputation: 4710
For Swift 3 it's now: IndexPath(row: rowIndex, section: sectionIndex)
Upvotes: 17
Reputation: 3581
Obligatory answer in Swift : NSIndexPath(forRow:row, inSection: section)
You will notice that NSIndexPath.indexPathForRow(row, inSection: section)
is not available in swift and you must use the first method to construct the indexPath.
Upvotes: 18
Reputation: 5294
indexPathForRow
is a class method!
The code should read:
NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;
Upvotes: 129