#iphone #objective-c #cocoa-touch #ios5 #storyboard
#iPhone #objective-c #cocoa-touch #ios5 #Раскадровка
Вопрос:
Я пытаюсь использовать storyboards 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"];
}
}
Ответ №1:
Если у вас нет этого indexPath в качестве ivar , такая переменная не существует в области видимости.
Если вы хотите получить 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"];
}
}
Комментарии:
1. Я пытался это сделать
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
, но он выдает мне нуль, когда я его регистрирую.2. Он должен возвращать nil, если нет выбранной строки, если он все еще возвращает nil. Тогда, возможно, свойство TableView равно нулю. Трудно сказать без дополнительной информации.
3. Большое спасибо — получение NSIndexPath было тем, что мне было нужно. Все отсортировано.
Ответ №2:
Этот трюк отлично работает, вот пример того, как я использовал его для извлечения проанализированных элементов в веб-представление
Файл .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"];
}
}