Как передать третье значение в ячейке другому контроллеру табличного представления

У меня есть UITableViewController с textLabel и detailTextLabel , дело в том, что я хочу передать, скажем, «скрытое» третье значение, которое имеет URL , поэтому, когда я касаюсь строки до следующего UITableViewController , я мог бы использовать делегат didSelectRowAtIndexPath , чтобы получить URL-адрес, но как я могу это сделать ?

0
nl ja de

1 ответы

Вы можете отправить словарь в следующий TableView. Импортируйте файл .h-файла SecondTableView в свой контроллер FirstTableView, а затем обратитесь к целевому словарю. Вам также потребуется реализовать prepareForSegue и вызвать его в файле didSelectRowAtIndexPath. Что-то вроде этого:

В файле didSelectRowAtIndexPath: (убедитесь, что вы установите идентификатор segue в Storyboard, если вы его используете).

[self performSegueWithIdentifier:@"toSecondTableViewController" sender:nil];

В SecondTableViewController.h создайте свой словарь

@property (nonatomic, retain)NSMutableDictionary *selectedDictionary;

Убедитесь, что это синтезировано в файле SecondTableViewController.m.

а затем в вашем FirstTableViewController

#import SecondTableViewController.h 
//prepareForSegue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"toSecondTableViewController"])
    {
        //create the dictionary to store the information from the array
        NSDictionary *dictionaryToPass;
//MainTable is your TableView in your TableViewController
        NSIndexPath *indexpath = [self.MainTable indexPathForSelectedRow];
        NSLog(@"IndexPath is: %@",indexpath);
        //load correct information based on indexpath selected

            dictionaryToPass = [array objectAtIndex:indexpath.row];

        //create the view for the segue
        SecondTableViewController *secondTable = segue.destinationViewController;

//pass the dictionary
        seriesTable.selectedDictionary = dictionaryToPass;
    }
}

Затем вы можете ссылаться на ключи в выбранном документе в SecondTableViewController и получать этот URL.

1
добавлено
Думаю, это тоже сработает. Если он заполняется из массива, словарь легко, и вы можете просто выбрать, какую позицию в массиве заполнить словарь, на основе выбранной ячейки.
добавлено автор Siriss, источник
Я просто обновляю свой код. Удостоверьтесь, что вы не отключены одним на вашем указательном пути и что ваш второй словарь синтезирован. Это предполагает раскадровку, но все равно должен быть тот же код с небольшим изменением в segue, если вы его не используете. Неважно, действительно ли вы создаете словарь внутри prepareForSegue или снаружи, просто установите словарьToPass = nil, если вы установите его вне prepareForSegue, чтобы он был пуст для других выборов.
добавлено автор Siriss, источник
Или, может быть, с NSUserDefaults? Просто получите значение из NSDictionary и при подготовкеForSegue отправьте значение в NSUserDefaults, затем в следующем представлении таблицы, когда viewWillAppear восстановит URL-адрес с помощью NSUserDefaults и готов к работе ... Как вы думаете?
добавлено автор Francisco Gutiérrez, источник
это звучит неплохо, спасибо вам большое!
добавлено автор Francisco Gutiérrez, источник
Я только что попробовал, как вы упомянули, и я получаю нулевое значение, а затем возвращаюсь к последнему контроллеру и в будущем я получаю ожидаемое последнее значение, любые идеи, почему это происходит?
добавлено автор Francisco Gutiérrez, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.