Jak przekazać dane z kontrolera widoku szczegółowego do uitableview?
W mojej aplikacji korzystam z możliwości wyboru kategorii z mojej listy. moim zadaniem jest, gdy użytkownik kliknie lub wybierze komórkę, powinien móc wyświetlić wybrany szczegół komórki w następnym widoku (widok szczegółowy). a gdy wybierze element w widoku szczegółowym, powinien być w stanie cofnąć się w widoku tabeli i powinien być w stanie zobaczyć wybrany element w głównym kontrolerze.
jestem w stanie poprawnie nawigować z widoku tabeli do widoku szczegółowego, ale nie mogę pokazać elementu, który jest wybrany w widoku szczegółowym, do rootviewcontroller.
proszę mi pomóc z tym problemem.
obraz pierwszy to moja strona kontrolera rootview. na przykład: jeśli użytkownik wybierze @ „make”, będzie mógł zobaczyć całą trafną kategorię @ „make”. na następnej stronie (które zdjęcie 2).
obraz to moja strona szczegółów.
a gdy użytkownik wybierze @ „abarth”, powinien być wyświetlany na stronie kontrolera rootview (czyli pierwszej strony).
Oto mój kod strony kontrolera rootview:
<code>- (void)viewDidLoad { self.car = [[NSArray alloc]initWithObjects:@"Make",@"Model",@"Price Min",@"Price Max",@"State",nil]; [super viewDidLoad]; } -(NSInteger) numberOfSectionInTableView:(UITableView *)tableView { return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.car count]; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *TextCellIdentifier = @"Cell"; UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:TextCellIdentifier]; if (cell==nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TextCellIdentifier]; cell.accessoryType = UITableViewCellAccessoryNone; cell.selectionStyle = UITableViewCellSelectionStyleNone; } cell.textLabel.text = [self.car objectAtIndex:[indexPath row]]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (0 == indexPath.row) { NSLog(@"0"); self.detailcontroller.title = @"Make"; } else if (1 == indexPath.row) { NSLog(@"1"); self.detailcontroller.title = @"Model"; } else if (2 == indexPath.row) { NSLog(@"2"); self.detailcontroller.title = @"Price Min"; } else if (3 == indexPath.row) { self.detailcontroller.title = @"Price Max"; } else if (4 == indexPath.row) { NSLog(@"3"); self.detailcontroller.title = @"State"; } [self.navigationController pushViewController:self.detailcontroller animated:YES]; } following is my detail view page code: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([self.title isEqualToString:@"Make"]) { detail = [[NSArray alloc]initWithObjects:@"Any Make",@"Abarth",@"AC",@"ADAYER",@"Adelaide",@"ALFA ROMEO",@"ALLARD",@"ALPINE-RENAULT",@"ALVIS",@"ARMSTRONG", @"ASTON MARTIN",@"AUDI",@"AUSTIN",@"AUSTIN HEALEY",@"Barossa",@"BEDFORD", @"BENTLEY",@"BERTONE",@"BMW",@"BOLWELL",@"BRISTOL",@"BUICK",@"BULLET", @"CADILLAC",@"CATERHAM",@"CHERY",@"CHEVROLET",@"CHRYSLER",@"CITROEN", @"Country Central",@"CSV",@"CUSTOM",@"DAEWOO",@"DAIHATSU",@"DAIMLER", @"DATSUN",@"DE TOMASO",@"DELOREAN",@"DODGE",@"ELFIN",@"ESSEX", @"EUNOS",@"EXCALIBUR",@"FERRARI",nil]; if ([self.title isEqualToString:@"Abarth"]) { detail = [[NSArray alloc]initWithObjects:@"HI", nil]; } } else if ([self.title isEqualToString:@"Model"]) { detail = [[NSArray alloc]initWithObjects:@"Any Model", nil]; } else if ([self.title isEqualToString:@"Price Min"]) { detail = [[NSArray alloc]initWithObjects:@"Min",@"$2,500", @"$5,000", @"$7,500", @"$10,000", @"$15,000", @"$20,000", @"$25,000", @"$30,000", @"$35,000", @"$40,000", @"$45,000", @"$50,000", @"$60,000", @"$70,000", @"$80,000", @"$90,000", @"$100,000", @"$500,000", @"$1,000,000",nil]; } else if ([self.title isEqualToString:@"Price Max"]) { detail = [[NSArray alloc]initWithObjects:@"Max", @"$2,500", @"$5,000", @"$7,500", @"$10,000", @"$15,000", @"$20,000", @"$25,000", @"$30,000", @"$35,000", @"$40,000", @"$45,000", @"$50,000", @"$60,000", @"$70,000", @"$80,000", @"$90,000", @"$100,000", @"$500,000", @"$1,000,000",nil]; } else if ([self.title isEqualToString:@"State"]) { detail = [[NSArray alloc]initWithObjects:@"Any State", @"Australian Capital Territory", @"New South Wales", @"Northern Territory", @"Queensland", @"South Australia", @"Tasmania", @"Victoria", @"Western Australia",nil]; } [self.tableView reloadData]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [detail count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [detail objectAtIndex: [indexPath row]]; cell.font = [UIFont systemFontOfSize:14.0]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.navigationController popViewControllerAnimated:YES]; } </code>