Передать переменную int в UITableView через UINavigationController

Я пытаюсь передать переменную int в UITableView через UINavigationController (я использую xcode 4.3). Поэтому я создал 2 класса (PartsTableViewController, который является "UITableViewController", и PartsNavController, который является "UINavigationController"), я хочу передать переменную из моего текущего Класс для PartsTableViewController и затем откройте эту таблицу с его контроллером навигации, который содержит строку заголовка, поэтому я написал в моем текущем классе следующий код:

PartsNavController *partsNav = [self.storyboard instantiateViewControllerWithIdentifier:@"partsNav"];  
partsNav.groupId = myGroupp.bg_id;
[self presentModalViewController:partsNav animated:YES];

и в классе PartsNavController я написал в viewDidLoad:

PartsTableViewController *parts = [self.storyboard instantiateViewControllerWithIdentifier:@"Parts"];
parts.groupId = groupId;
[parts.tableView reloadData];

и в PartsTableViewController я написал в viewDidLoad:

NSLog(@"This is group: %d", groupId);

но при запуске он генерирует вывод 2 раза,

This is group:1
This is group:0

первый раз - это значение, которое я отправил, а второй раз - 0, я просто хочу значение, которое я отправил, а не 0, как я могу предотвратить это и получить только значение, которое я послал????

Я хочу перейти от (MaktabatyTableViewController) к (PartsTableViewController) без использования segue

2 ответа

Решение

Лучший способ сделать то, что вы хотите, это вставить второй TableViewController в существующий UINavigationController. Самый простой способ сделать это - создать этот NavContr в StoryBoard, а затем TableViews и подключить его ячейку к ведущему контроллеру представления с помощью segue. И чем использовать метод ниже:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destViewController = segue.destinationViewController;
    destViewController.integerValue = value;
}

Я хочу перейти от (MaktabatyTableViewController) к (PartsTableViewController) без использования segue

Существует (как минимум) две стратегии, которые вы можете выбрать:

  1. Прямое общение: люди часто спрашивают, как общаться между двумя объектами, и это почти всегда сводит один из объектов к другому (а иногда и наоборот). Чтобы отправить сообщение объекту, вам нужен указатель на этот объект; Если у вас есть указатель, нет никаких загадок в том, как общаться. Размышление об этом в этих терминах помогает вам думать о проблеме немного по-другому: вместо немедленного "как отправить сообщение этому объекту?" вместо этого вы можете сосредоточиться на отношениях между двумя объектами. Как каждый был создан? Является ли один из объектов родителем другого? Есть ли какой-нибудь общий родительский объект, который может предоставить указатель? Как должны быть связаны объекты, если вообще?

  2. Косвенное общение: иногда вместо того, чтобы два объекта общались напрямую, более целесообразно направить общение через некоторый промежуточный объект. Например, ваш MaktabatyTableViewController может отправить сообщение своему делегату, а затем делегат может передать информацию PartsTableViewController, Гораздо более общим решением является использование уведомлений: MaktabatyTableViewController может опубликовать уведомление о том, что PartsTableViewController слушает. Промежуточным объектом в этом случае является центр уведомлений. В любом случае, преимущество, которое вы получаете при косвенном общении, состоит в том, что ни один объект не должен знать о другом. Это уменьшает связь между двумя классами и делает их более гибкими и более пригодными для повторного использования.

Из того, что я вижу в вашем вопросе, я бы предложил использовать уведомления.

Другие вопросы по тегам