presentModalViewController Проблема! - PullRequest
1 голос
/ 08 июня 2011

Итак,

У меня есть форма (которая в основном представляет собой UITableView), и как только я заканчиваю форму, я нажимаю кнопку «Готово», которая находится в верхней части экрана.

После нажатия мне нужно добавить данные в другой tableView (который находится в другом tableViewController). Эта таблица также находится внутри контроллера навигации.

После того, как я нажму кнопку «Готово», мне нужно, чтобы presentModalViewController был новым TableView (с новыми данными) вместе с навигационным контроллером в верхней части tableView.

Итак, подведем итог:

  • Кнопка Готово находится в someTableViewController.
  • Мне нужно добавить объект (давайте просто скажем, что я добавляю имя с именем «Добби» для простоты) в другой табличный вид с именем dogTableViewController.
  • Я перезагружаю данные и представляю экран, на котором есть dogTableViewController внутри dogNavigationController.
  • Все классы указаны правильно и включены.

Я вставляю - (IBAction) при нажатии кнопки Готово.

-(IBAction) doneWithData: (UIBarButtonItem*) sender{


 UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[indicator sizeToFit];
indicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                              UIViewAutoresizingFlexibleRightMargin |
                              UIViewAutoresizingFlexibleTopMargin |
                              UIViewAutoresizingFlexibleBottomMargin);

indicator.tag = 1;
[self.view addSubview:indicator];
[indicator setBackgroundColor:[UIColor clearColor]];
indicator.center = self.view.center;
indicator.hidden = FALSE;
[indicator startAnimating];

if (self.dogTableViewController == nil)
{
    DogTableViewController *temp = [[DogTableViewController alloc] init];
    self.dogTableViewController = temp;
    [temp release];
}

if (self.dogNavigationController == nil)
{
    DogNavigationController *temp = [[DogNavigationController alloc] init];
    self.dogNavigationController = temp;
    [temp release];
}

[self.dogTableViewController.dogArray addObject:@"Dobby"];
[self.dogTableViewController.tableView reloadData];

NSLog (@"%@", [self.dogTableViewController.dogArray objectAtIndex:0]); 
//Prints out "Null" //

[self presentModalViewController:dogNavigationController animated:YES];


[indicator release];

}

Когда я все это сделаю и нажму кнопку Готово,

У меня пустой экран навигации без ТАБЛИЦЫ. Плюс у меня также были некоторые кнопки на экране DogNavigationController. Ничего не видно!

Моя цель - просто перенести экран на этот новый экран (который является домашним экраном, а не rootController). Как вы думаете, я должен пойти с modalViewController для этой задачи? Как вы думаете, я должен использовать другой способ для передачи данных на другой экран?

p.s. Я не хочу использовать PushViewController.

1 Ответ

2 голосов
/ 08 июня 2011

Я думаю, что вы должны сделать

[self.navigationController popToRootViewControllerAnimated:YES];

скорее.Чтобы получить контроллер корневого представления, вы можете сделать:

DogTableViewController * viewController = [self.navigationController.viewControllers objectAtIndex:0];
[viewController.dogArray addObject:aDog];

Оригинальный ответ

Разве вы не должны инициализировать контроллер навигации с помощью корневого контроллера представления?

DogNavigationController *temp = [[DogNavigationController alloc] initWithRootViewController:self.dogTableViewController];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...