2013-03-04 3 views
1

У меня есть два UITableViews: tableviews1 и tableview2.TableView внутри UITableViewCell не обнаружено

tableview2 находится внутри UITableViewCell таблицы view1. Когда я нажимаю на uitableviewcell tableview2, его не отвечает, но tableview1 tableviewcell обнаруживается.

Может ли кто-нибудь помочь в решении этой проблемы?

Это код, я использую:

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

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (tableView == orderFoodDetailTableview) { 

    if (cell == nil) { 

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    } 
} 
    else { 


cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    [self addUItableViewAsSubView :cell]; 

     } 

    cell.selectionStyle = UITableViewCellSelectionStyleGray; 
    } 

    return cell; 
} 



- (void)addUITableViewAsSubView:(UITableViewCell *)cell{ 

    portionSelected_yVal = [sArray count]*25; 
    portionTableview = [[UITableView alloc]initWithFrame:CGRectMake(10, height+53, 140, portionSelected_yVal)]; 
    portionTableview.delegate = self; 
    portionTableview.dataSource = self; 
    portionTableview.backgroundColor = [UIColor clearColor]; 
    portionTableview.hidden = YES; 
    portionTableview.layer.borderColor=[UIColor blackColor].CGColor; 
    portionTableview.layer.borderWidth=1.0f; 
    portionTableview.layer.cornerRadius=2.0f; 
    [cell addSubview:portionTableview]; 
} 
+0

У вас установлен делегат таблицы view2? –

+0

Да, я это делаю. – user2130948

+0

Почему бы не написать какой-нибудь связанный код? –

ответ

1

Для целей вы упомянули (в комментариях), Вы можете динамически регулировать высоту UITableViewCell от TableView1, в то время как пользователь прикасается вниз tableviewcell. Повторяя эту ячейку, вы можете отрегулировать ее в нормальном размере.

Надеюсь, вы получите мое мнение.


EDIT

Вы должны проверить, для которых Tableview вы хотите выполнить действия в общих методов делегата UITableView «s.

Скажите, например. у вас есть две таблицы T1 и T2.

затем в следующем методе вы должны сначала проверить, что для таблицы (T1 или T2), метод вызывается.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == T1) 
     // Return number of sections for T1; 
    else if (tableView == T2) 
     // Return number of sections for T2; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if (tableView == T1) 
     // Return number of rows for T1; 
    else if (tableView == T2) 
     // Return number of rows for T2; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == T1) 
     // Create and Return cell for T1; 
    else if (tableView == T2) 
     // Create and Return cell for T2; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == T1) 
     // Do stuff for T1 related actions; 
    else if (tableView == T2) 
     // Do stuff for T2 related actions; 
} 

Это понятно?

+0

Да. Это я уже сделал, но проблема в том, что я не могу обнаружить методы делегата для tableView2. Когда я нажимаю на UITableViewCell таблицыView2.Delegate методы tableView1 получает вызов вместо tableView2. – user2130948

+0

@ user2130948 отредактировал отредактированный – viral

+0

Я уверен, что вы никогда не получите правильные обратные вызовы. UITableViews имеют много базового кода, обрабатывающего события касания. Что вы можете сделать, так это ответить на метод 'tableView: willSelectRowAtIndexPath:', и если это tableView1 (представление верхней таблицы) и указательный путь, который содержит представление таблицы внутри ячейки, верните 'nil'. –

Смежные вопросы