2014-01-23 3 views
0

У меня есть два метода:didSelectRowAtIndexPath и реализация prepareForSegue

- (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
testNumber=indexPath.row; 
    testNumber=testNumber+1; 
    NSLog(@"Test number : %i",testNumber); 
} 

затем

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if ([[segue identifier] isEqualToString:@"testStart1"]) 
    { 
    tViewController *tvc = [segue destinationViewController]; 
    tvc.testNumberTVC=testNumber; 
    } 
} 

У меня также SEGUE, который срабатывает при выборе строки в моем UITableView.

Моя проблема в том, что я выбираю строку, prepareForSegue действует до didSelectRowAtIndexPath, поэтому новое значение testNumber не переносится.

Я хотел бы реализовать prepareForSegue только тогда, когда didSelectRowAtIndexPath делается лучше: Перенести значение testNumber используя только didSelectRowAtIndexPath метод и поэтому удаление метод prepareForSegue.

Я видел несколько тем о передаче данных с UITableView в DetailView, но с новым xCode 5, когда появляется сообщение об ошибке, я действительно не знаю, связано ли это с тем, что решение устарело или существует реальная ошибка это мой код.

+0

Только предложение, вместо того, чтобы делать 'testNumber = testNumber + 1;' вы можете сделать 'testNumber ++,' и это будет сделать то же самое. –

ответ

1

Вы можете создать свои segues между контроллерами вида, а не от выбора ячейки, и установить идентификатор segue в раскадровке. Тогда вы могли бы сделать что-то вроде этого:

- (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    testNumber=indexPath.row; 
    testNumber=testNumber+1; 
    NSLog(@"Test number : %i",testNumber); 
    [self performSegueWithIdentifier:@"mySegueIdentifier" sender:self]; 
} 

Другим вариантом было бы, чтобы проверить ответ на эту ссылку here. В принципе вы можете получить indexPath клеток в prepareForSegue вроде этого:

UITableViewCell *cell = (UITableViewCell*)sender; 
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
+0

Мой segue уже находится в раскадровке и работает, но у меня возникли проблемы с передачей значения testNumber из TableView в DetailView. – GoldXApp

+0

Правильно, потому что prepareForSegue вызывается до didSelectRowAtIndexPath. – JonahGabriel

+0

Точно. У вас есть идея передать значение в didSelectRowAtIndexPath? – GoldXApp

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