В RootViewController
У меня есть кнопка, которая при щелчке делает self.navigationController
нажатием на CategoryViewController
.Пропускная способность с использованием делегата не работает
Затем, в CategoryViewController
, нажмите один элемент нажимать на SubCatsViewController. и Когда я выбрал ячейку, и она должна рассеять CategoryViewController
и SubCatsViewController
назад к RootViewController
.
Но как это сделать?
Если я использую rejectViewControllerAnimated, он отклоняет только SubCatsViewController
, а не CategoryViewController
. Я написал делегата в SubCatsViewController
, поэтому я могу получить выбранное значение от SubCatsViewController
, а в RootViewController
Я согласен с этим протоколом делегата, чтобы получить значение, которое я хотел.
Однако я не могу получить значение, используя делегат, который я написал.
- (void)chooseCat:(BButton *)sender
{
UIStoryboard *storyboard = [UIStoryboard
storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
CategoryViewController *cat =
[storyboard instantiateViewControllerWithIdentifier:@"Cats"];
SubCatsViewController *sub =
[storyboard instantiateViewControllerWithIdentifier:@"SubCats"];
sub.delegate = self; //correct way?
[self.navigationController pushViewController:cat animated:YES];
}
CategoryViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath
{
UIStoryboard *storeboard =
[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
SubCatsViewController *sub =
[storeboard instantiateViewControllerWithIdentifier:@"SubCats"];
sub.subCats =
[[self.cats objectAtIndex:indexPath.row] objectForKey:@"subcat"];
[self.navigationController pushViewController:sub animated:YES];
}
SubCatsViewController.h
@protocol SubCatsDelegate <NSObject>
- (void)didSelectSubCats:(SubCats *)cats;
SubCatsViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.cat.catId =
[[self.subCats objectAtIndex:indexPath.row] objectForKey:@"id"];
self.cat.name =
[[self.subCats objectAtIndex:indexPath.row] objectForKey:@"name"];
if ([self.delegate respondsToSelector:@selector(didSelectSubCats:)]) {
[self.delegate didSelectSubCats:self.cat];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
Это не-контроллер Корневой –