Вы выделяете и инициализируете новый контроллер вида каждый раз, когда выбираете ячейку в SubTableController
.
MainTableController * mainViewController = [[MainTableController alloc] init];
и, конечно, это не то, что есть в стеке навигации.
Вам нужно установить связь между этими двумя контроллерами.
Я предлагаю, чтобы контроллер подчиненного представления определил свойство на главном, чтобы сообщать о нем при необходимости.
В SubTableController
добавьте свойство и синтезируйте его:
@property(readwrite, assign) MainViewController *mainViewController;
// and ...
@synthesize mainViewController;
Конечно, когда вы нажимаете контроллер вспомогательного представления, не забудьте установить свойство.
// in main view controller
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// alloc/init the sub VC
subVCInstance.mainViewController = self;
[self pushViewController:subVCInstance ......
Теперь, когда в вспомогательной строке выбрана строка, отправьте сообщение основной, без alloc / init нового MainViewController
объекта:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ActionList * actionListObj = [appDelegate.actionArray objectAtIndex:indexPath.row];
self.chooseActions = actionListObj.actionName;
//MainTableController * mainViewController = [[MainTableController alloc] init];
[self.mainViewController getAction:self.chooseActions];
[self.navigationController dismissModalViewControllerAnimated:YES];
}
Это должно работать просто отлично.