Как узнать в подробном представлении, какая ячейка в табличном представлении была выбрана? - PullRequest
1 голос
/ 20 мая 2010

как я могу узнать, какая ячейка таблицы была выбрана? (Находясь в подробном представлении) Проблема в том, что. У меня есть контроллер представления таблицы. Здесь разбираются из интернета записи в таблицу. Так что это динамическое представление табу, которое загружается из Интернета. Я не буду знать, сколько записей будет в таблице, поэтому я не буду знать, какое представление подробностей вызывать при нажатии на строку. Итак, я сделал один вид. Это представление содержит календарь. В этом календаре (который подробно описан) я буду анализировать данные из Интернета в зависимости от выбранной строки. Например: у меня есть таблица: запись 1, запись 2, запись 3, запись 4 Когда я нажимаю на запись 2, мне нужно вызвать php с записью аргумента 2. php узнает, какую запись в таблице я выбрал, и сгенерирует мне правильный xml, который я буду анализировать.

Вот моя табличная функция didSelectRow:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic -- create and push a new view controller

 if(bdvController == nil)
    bdvController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:[NSBundle mainBundle]];
  Villa *aVilla = [appDelegate.villas objectAtIndex:indexPath.row];

  [self.navigationController pushViewController:bdvController animated:YES]

А вот моя функция просмотра себя на detailviewcontroller:

-(void)loadView {

    [super loadView];

    self.title=@"Month"

    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"ListView" style:UIBarButtonItemStyleDone target:self action:@selector(add:)];
    self.navigationItem.rightBarButtonItem = addButtonItem;

    calendarView = [[[KLCalendarView alloc] initWithFrame:CGRectMake(0.0f, 0.0f,  320.0f, 373.0f) delegate:self] autorelease];
    appDelegate1 = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];

    myTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 260, 320, 160)style:UITableViewStylePlain];
    myTableView.dataSource=self;
    myTableView.delegate=self;
    UIView *myHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, myTableView.frame.size.width,2)];
    myHeaderView.backgroundColor=[UIColor grayColor];
    [myTableView setTableHeaderView:myHeaderView];

    [self.view addSubview:myTableView];
    [self.view addSubview:calendarView];
    [self.view bringSubviewToFront:myTableView];
}

Я думаю, что здесь, в самостоятельной загрузке, мне нужно сделать процедуру if .. Если indexPath.row = x parse fisier.php? Variabila = title_of_rowx но вопрос в том, как я знаю переменную indexPath?

1 Ответ

0 голосов
/ 20 мая 2010

Вы можете установить свойство в BookDetailViewController:

BookDetailViewController.h:

@interface BookDetailViewController : UITableViewController {
    NSIndexPath *selectedIndexPath;
}
@property (nonatomic, retain) NSIndexPath *selectedIndexPath;
@end

BookDetailViewController.m

@implementation BookDetailViewController
@synthesize selectedIndexPath;
- (void)dealloc {
    [selectedIndexPath release];
}
// ...
@end

Tableview: didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic -- create and push a new view controller

    if(bdvController == nil) {
        bdvController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:[NSBundle mainBundle]];
    }
    bdvController.selectedIndexPath = indexPath
    Villa *aVilla = [appDelegate.villas objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:bdvController animated:YES]
}

В зависимости от того, что вы делаете в своем приложении, может иметь смысл сделать свойство объектом Villa, а не NSIndexPath.

...