How to create NSIndexPath for TableView

IosIphoneUitableviewNsindexpath

Ios Problem Overview


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];

Ios Solutions


Solution 1 - Ios

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)

Solution 2 - Ios

indexPathForRow is a class method!

The code should read:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;

Solution 3 - Ios

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.

Solution 4 - Ios

For Swift 3 it's now: IndexPath(row: rowIndex, section: sectionIndex)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRubber DuckView Question on Stackoverflow
Solution 1 - IosBen GottliebView Answer on Stackoverflow
Solution 2 - IosverecView Answer on Stackoverflow
Solution 3 - IosJohnVanDijkView Answer on Stackoverflow
Solution 4 - IoscomradeView Answer on Stackoverflow