2012-05-20 3 views
0

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

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

и в PartsNavController класс I написал in 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 как я могу предотвратить это и получить только то значение, которое я отправил ????

enter image description here

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

+0

Похоже, вы неправильно используете подклассы, это очень редкий случай, когда вам нужно подклассифицировать UINavigationController. Я отправлю решение для вашего дела. – DanSkeel

+0

Ваш текущий класс находится в каком-то другом Parent NavigationController? Если да, почему бы вам не просто нажать новый ViewController на этот родительский контроллер навигации? Если ваш текущий класс не находится в NavigationController, почему бы не вставлять его? – DanSkeel

+0

Да, мой текущий класс также является UITableViewController, связанным с UINavigationController –

ответ

5

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

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

enter image description here

+0

что такое DPViewController ?? Вы имеете в виду мой UINavigationController ?? –

+0

Да, извините, скопируйте/вставьте ошибку – DanSkeel

+0

спасибо за этот снимок, но вы меня не понимаете, я поставлю рис, чтобы проиллюстрировать свое среднее –

0

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

Там (по крайней мере) две стратегии вы можете выбрать:

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

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

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

+0

ok большое спасибо за ваш ответ –

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