2014-10-04 2 views
0

Я хочу установить соединение между моим masterTableViewController и dataTableViewController из моего файла masterTableViewController.swift. Я могу установить соединение в раскадровке, но не в состоянии быстро установить логику. Пожалуйста помогите.Как установить соединение Segue между двумя табличными представлениями через swift в контроллере представления таблицы корневой таблицы?

Ниже приведен код, который я хотел бы преобразовать в Свифт: -

- (void)prepareForSegue:(UIStoryBoardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isequalToString:@“state”]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     StateTableViewController *destViewController = segue.destinationViewController; 
     destViewController.countryname = [countries objectAtIndex:indexPath.row]; 
     destViewController.title = destViewController.countryname; 
    } 
} 

Из вышесказанного я хотел бы получить название страны из roottableviewcontroller, а затем в зависимости от имени страны, я хотел бы доступ к состояниям, которые я ввел в массив для этой страны в моем StateTableViewController. Но не смог этого добиться.

+0

Это не ясно, что вы просите. «Установление соединения» не помогает - что вы на самом деле хотите _do_? – jrturton

+0

На основе ячейки, нажатой на моем корневом контроллере tableviewcontroller, я хочу отобразить информацию, связанную с этой ячейкой, в следующем контроллере tableviewcontroller. Например, если мой корневой контроллер tableview отображает список всех стран, и если я нажму на ячейку, связанную с одной страной, тогда элемент управления должен перейти к следующему контроллеру tableview, чтобы отобразить состояние, связанное с этой страной. Я могу достичь этого в объективе C, но хотел понять, как это можно достичь через Swift. –

+0

Итак, ваш вопрос о преобразовании объектного кода в быстрый? В этом случае включите код в свой вопрос и выделите те части, с которыми вы столкнулись. – jrturton

ответ

1

Вот эквивалент Swift код для вашего кода Objective-C:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "state" { 
     // indexPathForSelectedRow() returns an optional indexPath. Here I use 
     // optional binding to unwrap it 
     if let indexPath = self.tableView.indexPathForSelectedRow() { 
      let destViewController = segue.destinationViewController as StateTableViewController 
      destViewController.countryname = countries[indexPath.row] 
      destViewController.title = destViewController.countryname 
     } 
    } 
} 
+0

Эй, спасибо, Но нужно ли объявлять destViewController где-нибудь, поскольку он дает мне ошибку «Использование неразрешенного идентификатора« destViewController ». ?? –

+0

Да, вы правы. Я просто получил это спасибо. Также я сделал небольшую модификацию, указанную выше. –

+0

Давайте сначала определим несколько вещей. Поместите 'println (" in prepareForSegue ")' перед первым 'if'. Поместите 'println (« внутрь, если пусть »)' после '' let let'. Попробуйте hardcoding 'destViewController.countryname =" France "'. – vacawama

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