2012-04-26 3 views
1

Я новичок в Objective-C, и я начинаю работать над приложением, которое будет иметь несколько представлений. Я хочу создать их на 100% программно без файлов XIB. Я понимаю, что мне нужно создать классы ViewControllers для моих экранов, но я хочу спросить вас, как управлять навигацией с ним. Предположим, что у меня есть один ViewController, который содержит tableView. И я хочу создать следующий экран. Так что я понимаю, что row в tableViewController класс вызоваСоздавайте новые представления программно и управляйте ими

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

Но как насчет следующего экрана? У меня его еще нет. Должен ли я создать класс «готовый» ViewController? Как обрабатывать навигацию в этом случае?

ответ

3

В вашем случае, при выборе ячейки, вы бы:

  • Создать новый экземпляр вашего следующего контроллера представления,
  • Нажмите этот новый экземпляр в стеке UINavigationController.

Итак, во-первых, вам необходимо убедиться, что ваш первый контроллер представлений (тот, у которого есть вид таблицы) содержится в UINavigationController.

// AppDelegate, in applicationDidFinishLanching: 

UIViewController *firstViewController = [[[MyCustomTableViewController alloc] 
              initWithNibName:nil bundle:nil] 
             autorelease]; 
UINavigationController *navigationController = [[[UINavigationController alloc] 
               initWithRootViewController:firstViewController] 
               autorelease]; 

[self.window setRootViewController:navigationController]; 

Затем, при выборе ячейки в вашем представлении таблицы, вы можете написать:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIViewController *nextViewController = [[[MyNextViewController alloc] 
              initWithNibName:nil bundle:nil] 
              autorelease]; 

    [self.navigationController pushViewController:nextViewController 
             animated:YES] 

} 
+0

Спасибо, это полезно. – Kuba

+0

И один вопрос. Я должен сделать несколько ViewControllers или, возможно, «перезагрузить» тот, который у меня уже есть? Или, может быть, создать новый экземпляр этого класса? – Kuba

+1

Это действительно начало и отличное объяснение того, что вам нужно начинать. Еще одна вещь: Ссылка на класс UINavigationController содержит хорошее введение: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html –

2

Убедитесь, что вы читали документ от Apple: View Controllers Programming Guide

В принципе, вы должны встройте свой контроллер табличного представления (являющийся контентом) в контроллере навигации (контейнер).

Тогда в -tableView: didSelectRowAtIndexPath :, вы будете создавать новый контент вид контроллера, и толкать его на текущем контроллере табличного, с помощью навигационного контроллера с такого рода сообщением:

[[self navigationController] pushViewController:<#myNextViewController#> animated:YES]; 

Обязательно прочтите также образцы кода от Apple (некоторые из них довольно тонкие, поэтому их легко понять).

-1

Ненавижу IB, и я попытался сделать приложения без него, однако он настолько встроен в рабочий процесс, что мне было проще просто потрогать зубы и использовать его. Тем не менее, есть сообщения, которые описывают в той или иной степени, как развиваются без IB, такие как:

Смежные вопросы