Как использовать раскадровку? - PullRequest
2 голосов
/ 25 октября 2011

Я пытаюсь использовать раскадровку segue вместо didSelectRowAtIndex.

Это то, что у меня есть, но этот метод не распознает indexPath.row. Есть ли альтернатива, которую я могу использовать, чтобы сделать то же самое?

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    SpecificExerciseTableViewController *upcomingViewController = segue.destinationViewController;
    if ([segue.identifier isEqualToString:@"Web"]) 
    {
        upcomingViewController.exerciseArray = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exercises"];
        upcomingViewController.muscleName = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"muscleName"];
    }
}

Ответы [ 2 ]

5 голосов
/ 25 октября 2011

Если у вас нет этого indexPath в качестве ивара, такой переменной в области не существует.

Если вы хотите получить indexPath для выбранной строки в UITableView, используйте:

- (NSIndexPath *)indexPathForSelectedRow

Скорректированный код для выше:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    SpecificExerciseTableViewController *upcomingViewController = segue.destinationViewController;
    if ([segue.identifier isEqualToString:@"Web"]) 
    {
        upcomingViewController.exerciseArray = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exercises"];
        upcomingViewController.muscleName = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"muscleName"];
    }
}
0 голосов
/ 26 сентября 2012

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

.h файл

@property (strong, nonatomic) NSString *url;
@property (strong, nonatomic) UIWebView *webView;

.m файл

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    if ([segue.identifier isEqualToString:@"WebViewSegue"]) {

        WebViewController *webViewController = segue.destinationViewController;
        webViewController.url = (self.parseResults)[indexPath.row][@"link"];
        webViewController.title = (self.parseResults)[indexPath.row][@"title"];

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...