Because the Cell is being reused ALL parts of if need to be set or unset, if it reuses the cell and the tick is there then it will display again. Note that if you have 20 rows but only 4 are on the screen iOS will draw only draw a few of them and as one scrolls of it is reused for the next one coming on.
Much of your didSelect.... is not needed.
Change to this;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"filterCuisineCell";
CuisineTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (indexPath.row == selectedRow.row) { // if you have sections then compare the whole indexPath
cell.imageView.image = [UIImage imageNamed:@"TickedCircle"];
}
else
{
cell.imageView.image = [UIImage imageNamed:@"UntickedCircle"];
}
cell.textLabel.text = [cuisinesArray objectAtIndex:indexPath.row];
return cell;
}