2013-06-08 4 views
2

У меня есть два класса; MasterView, который является UIViewController, который отображает мой TableView и MyClass, который по-разному действует как делегат и источник данных для TableView. Когда ячейка выбрана, мне нужно нажать контроллер вида (DetailView). Как я могу нажать представление из MyClass? Это все, что я на самом деле есть:Контроллер Push View от внешнего делегата

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

if (!detailViewController) { 
    detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
} 

//Somehow push detailViewController 
} 
+0

Как вы создаете экземпляр MyClass? Кроме того, это подкласс NSObject? – rdelmar

+0

Я вызываю метод в MyClass. Установите его подкласс NSObject. – Tanner

+0

Вопрос, который я задал, это то, как и где вы создаете свой экземпляр MyClass? Делает ли MasterView это? Вам нужно как-то получить ссылку на контроллер навигации, поэтому я пытаюсь выяснить, как ваши два класса связаны друг с другом. – rdelmar

ответ

2

Есть несколько способов сделать это. Предполагаю, что у вас уже есть Masterview, встроенный в UINavigationController?

Вы можете получить доступ к нему, передавая ссылку на ваш Masteriew, а затем использовать:

[masterView.navigationController pushViewController:detailViewController animated:YES]; 

Если ваш Masterview какой-то образом связан с приложением Делегирования и вы хотите получить доступ к нему, вы можете использовать следующую строку слишком :

MainClass *appDelegate = (MainClass *)[[UIApplication sharedApplication] delegate]; 
+0

На самом деле я попробовал свое первое предложение, но оно не получилось. Не могли бы вы более подробно объяснить вторую часть? – Tanner

+0

Первое предложение основано на том, что ваш главный взгляд встроен в контроллер навигации. Если вы используете раскадровки, вы можете просто выбрать MasterViewController, а затем выбрать «Редактор» -> «Вставить In» -> «NavigationController» из меню. С этого момента мое первое решение должно работать. Второй типп может помочь вам получить доступ к вашему главному виду. Это было на всякий случай, если у вас теперь есть прямая ссылка на вас mv и у вас AppDelegate есть, вы можете получить доступ к нему следующим образом: appDelegate.masterview. –

+0

ОК Спасибо, я был смущен тем, что было 'MainClass'. Я просто заменил его на «AppDelegate», а затем вызвал контроллер «appDelegate.navigation». – Tanner

-1

Если вы используете навигацию контроллер, просто использовать этот метод:

[self.navigationController pushViewController:(UIViewController *)viewController animated:(BOOL)animated]; 
Смежные вопросы