2014-09-30 4 views
-1

У меня есть простой проект раскадровки, с UITableViewController и детальным VC. Контроллер табличного представления имеет собственный класс, который является делегатом и источником данных таблицы.preprareForSegue: отправитель: никогда не вызывается в UITableViewController

Я создаю клетки с помощью следующего кода:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellId = @"cellId"; 



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
             reuseIdentifier:cellId]; 
    } 
    // Configure the cell... 


    return cell; 
} 

Определение TableView в раскадровке выглядит следующим образом:

enter image description here

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

В раскадровке, то TableView ячейка подключена к деталям ВК:

enter image description here

Я уже проверить на подобные вопросы, но ничего не кажется, относится к моему делу. Пользовательский класс tableview установлен, и все подключения делегата и источника данных выглядят нормально.

Я совершенно новый для раскадровки, поэтому я боюсь, что ошибка должна быть в конфигурации. Если я реализую didSelectRow ... я могу заставить систему работать так, как ожидалось, но я бы хотел сделать это с помощью segues.

+0

Скажите, что вы подключили свой UITableViewController к деталям View, используя push-сегу .. –

+0

И где должен был вызываться segue? 'performForSegue:' в коде? На Раскадке, где она связана? – Larme

+0

В своем раскадровке щелкните ячейку и создайте свой сеанс для любого «ViewController», в который вы хотите переходить. –

ответ

0

Перетащите и удерживайте «ctrl» от вашего UITableViewCell до нужного контроллера. В качестве типа segue используйте push и дайте segue идентификатор. После этого вы можете позвонить performSegue:segue и проверить, если ваш переход вызывается с помощью

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([segue.identifier isEqualToString:@"your identifier"]) { 
     YourViewController *yourVC = (YourViewController*)segue.destinationViewController; 
     // prepare your vc 
     } 
} 

Вы также можете снять флажок cell==nil, так как это уже не нужно, так как прошивка 6.

+0

Я уже сделал это. Пожалуйста, см. Мой обновленный вопрос – cfischer

+0

@cfisher, вы уже удалили ячейку == nil check? Вы можете удалить инструкцию all if. – gpichler

0

Подготовки к Segue вызывается только при выполнении SEGUE называется либо из-за связи, которое вы имели в раскадровке, либо вы вызывали функцию segue явно.

Для вызова выполнить segue - Ctr + перетащить из вашего uitableviewController в detailviewController. Назначьте segue идентификатор.

И в пользовательском классе - для метода Tableview: didSelectRowAtIndexPath: - вызова метода performSegueWithIdentifier: и передать идентификатор. Также не забудьте отменить выбор ячейки.

На этом этапе будет подготовлена ​​подготовка к Сеге.

+0

У меня есть связь в моей раскадровке. См. Обновленный вопрос. – cfischer

+0

Вы пытались вызвать performSegueWithIdentifier:? – VaibhavAggarwal

+0

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

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