J_Evan J_Evan - 6 months ago 24
Objective-C Question

TableView reloadData doesn't update UI in iPad , but works in iPhone

I have a strange error . I am using

UITableView
which has to be reloaded when a row get selected . This works fine in iPhone simulator . While running in iPad ,
didSelectRowAtIndexPath
is getting called but the UI isn't getting updated .
I tried calling the method
reloadData
on main thread . It's still the same .

I have tried various solutions in stackoverflow . Nothing seemed to fix my issue .

UPDATE

When i select a cell , new cell will be added . So i need to reload my tableview to display the dynamic change .
Posted my code below

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
NSUInteger count=indexPath.row+1;

NSMutableArray *insertIndexPaths = [NSMutableArray array];

[insertIndexPaths addObject:[NSIndexPath indexPathForRow:count inSection:indexPath.section]];

switch (indexPath.row) {
case 0:
{
if ([ItemsInSection[indexPath.section] count]==1){
[ItemsInSection[indexPath.section] addObject:obj2];

[TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];

[TabView endUpdates];
}
else {

[ItemsInSection[indexPath.section] removeAllObjects];
[ItemsInSection[indexPath.section] addObject:obj1];

[self.TabView reloadData];

}
}
break;

case 1:

{if ([ItemsInSection[indexPath.section] count]==2){
[ItemsInSection[indexPath.section] addObject:obj3];

[self.TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[self.TabView endUpdates];

}
else
{
[ItemsInSection[indexPath.section] removeAllObjects];
[ItemsInSection[indexPath.section] addObject:obj1];
[ItemsInSection[indexPath.section] addObject:obj2];

[self.TabView reloadData];
}
}
break;

case 2: {

if ([ItemsInSection[indexPath.section] count]==3) {
[ItemsInSection[indexPath.section] addObject:obj4];
[self.TabView beginUpdates];
[TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
[self.TabView endUpdates];

}
else
{
[ItemsInSection[indexPath.section] removeObject:obj4];
[self.TabView beginUpdates];
[TabView deleteRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];

[self.TabView endUpdates];

}
}
break;

default:
break;
}

}

Answer

I have found the solution for this issue . The background color of UITableViewCell was set to clear colour and the background color of UIView on the UITableViewCell was also set to clear colour . Changing these settings displayed the insertion of rows in UITableView in iPad simulator .