after adding uitableview to uiview didselectrowatindexpath not called ios

653 views Asked by At

I have created a custom tableview displayCustomUnitTableView and a custom UIView displayView and adding displayCustomUnitTableView to displayView. But i am not able to select any row in the tableView i.e., didSelectRowAtIndexPath is not called.

I am using the following code:

displayCustomUnitTableView = [[UITableView alloc]initWithFrame:CGRectMake(52.0, 110.0, 180.0, 110.0) style:UITableViewStylePlain];
displayCustomUnitTableView.delegate = self;
displayCustomUnitTableView.dataSource = self;
displayCustomUnitTableView.tag = 2;
displayCustomUnitTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
displayCustomUnitTableView.separatorColor = [UIColor blackColor];
displayCustomUnitTableView.rowHeight = 30.f;
[displayCustomUnitTableView setBackgroundColor:[ContentViewController colorFromHexString:@"#BCC9D1"]];
[displayCustomUnitTableView setBackgroundColor:[UIColor groupTableViewBackgroundColor]];
[displayCustomUnitTableView setAllowsSelection:YES];
[displayView addSubview:displayCustomUnitTableView];

cellForRowAtIndexPath:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"MyCell";
  UITableViewCell *cell= [tableView cellForRowAtIndexPath:indexPath];
  if (cell == nil)
  {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
  }
  if(tableView.tag == 1)
  {   
    cell.textLabel.text = [storeUnitList objectAtIndex:indexPath.row];
  }
  else if(tableView.tag == 2)
  {
    cell.textLabel.text = [storeCustomUnitList objectAtIndex:indexPath.row];
  }
   return cell;
 }

didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 if(tableView.tag == 1)
 {
    unitString = [storeUnitList objectAtIndex:indexPath.row];
 }
 else if(tableView.tag == 2)
 {
    unitString = [storeCustomUnitList objectAtIndex:indexPath.row];
 }
}

Thanks in advance.

2

There are 2 answers

0
Shubham On BEST ANSWER

Make sure you don't have any UIGestures on the superviews. In that case UITableView will be not getting the touches.

If you have any, handle it using :

- gestureRecognizer:shouldReceiveTouch: delegate method.

3
Hushain Mubarik Khan On

try this Regiseter a cell class with tabel

- (void)viewDidLoad
{
    [super viewDidLoad];

    displayCustomUnitTableView = [[UITableView alloc]initWithFrame:CGRectMake(52.0, 110.0, 180.0, 110.0) style:UITableViewStylePlain];
displayCustomUnitTableView.delegate = self;
displayCustomUnitTableView.dataSource = self;
displayCustomUnitTableView.tag = 2;
displayCustomUnitTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
displayCustomUnitTableView.separatorColor = [UIColor blackColor];
displayCustomUnitTableView.rowHeight = 30.f;
[displayCustomUnitTableView setBackgroundColor:[ContentViewController colorFromHexString:@"#BCC9D1"]];
[displayCustomUnitTableView setBackgroundColor:[UIColor groupTableViewBackgroundColor]];
[displayCustomUnitTableView setAllowsSelection:YES];
[displayView addSubview:displayCustomUnitTableView];

    [displayCustomUnitTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"identifier"];

}

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{return 1;}



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"i" forIndexPath:indexPath];

        /*

         Write code

         */
         cell.textLabel.text= @"hello";


        return cell;

    }
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        NSLog(@"Click");
    }