2013-11-15 4 views
0

У меня есть TableView с пользовательской ячейкой и заголовком раздела. Заголовок показывает мне страну, и пользовательская ячейка показывает мне Город.Как определить кнопку в пользовательском UITableViewCell?

, который выглядит следующим образом:

Если США

  • Нью-Йорк

  • Лос-Анджелес

Германия

  • Berlin

  • Frakfurt

каждый сотовый получил кнопку. после печати он будет перемещаться и нажимать название города на подробный вид.

Проблема в том, что я не знаю, как определить название города после того, как я нажал кнопку.

У меня было решение, но он больше не работает:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    StandortCell *cell = (StandortCell *)[tableView dequeueReusableCellWithIdentifier:@"ortCell"]; 
    [cell.detailButton setTag:indexPath.row]; 
    cell.ortLabel.text = [managedObject valueForKey:@"stadtname"]; 
} 


- (IBAction)detailButton:(id)sender { 

    UIView *contentView = [sender superview]; 
    UITableViewCell *cell = (UITableViewCell *)[contentView superview]; 
    NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell]; 

    NSInteger section = cellIndexPath.section; 

     UIButton * myButton = sender; 
    int row=myButton.tag; 

    NSIndexPath * indexPath = [NSIndexPath indexPathForRow:row inSection:section]; 

    StrasseViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"strasse"]; 
    self.selectedStandort = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    detail.currentStandort = self.selectedStandort; 
    [self.navigationController pushViewController:detail animated:YES]; 

} 

, когда я использую мой старый код будет просто показать правильную уличную строку в первой секции. он не обнаружил другие разделы (Страны);

Когда я выбираю первый город в разделе thirt. он покажет мне первый город в первом разделе.

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

+0

Возможный дубликат [Как передать UITableView IndexPath в UIButton @selector по параметрам в iOS?] (Http://stackoverflow.com/questions/11936126/how-to-pass-uitableview-indexpath-to-uibutton-selector -by-parameters-in-ios) – TheTiger

ответ

0

Вам нужно отправить строку и информацию о разделе отдельно так сделать бирку

Tag = строка * 1000 + раздел.

теперь от тега секции получить и значения строки, используя ROW = тег/1000 раздела = Тэг% 1000

использовать это значение, чтобы сделать правильный путь индекса или найти некоторые более чем 2 минут решения, чтобы получить это.

Внимание его обходной путь правильным будет

  1. Подкласс UIButton
  2. Добавьте свойство indexpath Int это
  3. сделать свой класс, чтобы сделать объект кнопки и InstEd из набора тегов indexpath свойства.

в CustomButton.h

@interface CustomButton :UIButton 
@property (nonatomic,assign)NSIndexPath *path; 
@end 

в CustomButton.м

@implementation CustomButton 
@synthesize path; 
@end 

Используйте этот обычай кнопку на вашу табличную ячейке и вместо тега установить путь свойство

+0

можете ли вы привести пример, пожалуйста? –

+0

[cell.detailButton setTag: indexPath.row]; insted этой строки использует long int tag = indexPath.row * 1000 + indexPath.section, [cell.detailButton setTag: tag]; – amar

+0

он работает большое спасибо !!! –

1

использование этого я надеюсь, что это будет решить вашу цель.

Создание кнопки нажимается метод в контроллере представления

  • (IBAction) detailButton: (UIButton *) отправитель {

    CustomUITableViewCellName * ячейка = (CustomUITableViewCellName *) [[отправитель SuperView] SuperView] ; NSIndexPath * cellIndexPath = [YOUR_TABLE_NAME indexPathForCell: cell];

}

Для КСН 7 добавить еще один SuperView.

Теперь таким образом вы получите свой IndexPath, и вы получите текущую строку, используя indexPath.row или indexPath.section.

Вы можете получить заголовок, используя свойство sender.title.

Вы можете использовать этот indexPath в своем массиве для получения требуемых сведений.

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