-2

имеются 2 tableview со списками, и пустой экран. я не знаю как мне сделать так чтобы на пустом экране выходил тест с учетом выбраного мною пункта!!! для этого мне нужно узнать indexPath.row я это уже сделал(ибо у меня не получилась бы переход с 1 таблицы на 2, и показывались нужные пункты) но когда я пишу в условии ПУСТОГО ЭКРАНА про 1 таблицу(номмер нажатой строки) он пишет не задеклорирвана перемнная! поэтому я решил, что в этом случаи мне нужно класс с первой ТаБЛицой СДЕЛАТЬ ГЛОБАЛЬНЫМ! для того чтобы с пустого экрана я мог импортировать эту переменную(со значение номера нажатия первой таблицы)

вот ссылка на мой код!!!

http://webfile.ru/0b65e007063c022aef9a5ff9906734c9

кому несложно ПОСМАТРИТЕ ПОЖАЛЙСТА!!!! И ОБЬЯСНИТЕ КАК ЭТО СДЕЛАТЬ))) НАДЕЮСЬ НА ВАШЕ ПОНИМАНИЕ

первая таблица: 1. овощи 2. фрукты. 3 ягоды.

вторая таблица исходит от того, на какой пункт нажали в первой таблице: если фрукты -- то 1. яблоко 2. бананы 3. мандарины и так далее или если овощи то --- 1. картошка 2. лук 3. огурцы

пустой экран:

на этом экране ничего нет! но я хочу сделать сдесь текст соответсвующей выбору двух предущих пунктов! например если мы выбрали картошка: то должно выходить фото его и небольшой текст

10
  • @SPARTAK, Постарайтесь писать более развернутые вопросы. Поясните, в чем вы видите проблему, как ее воспроизвести и т. д. @SPARTAK, Пожалуйста, оформляйте вопросы согласно правилам сообщества, иначе они будут удаляться. 16 апр 2014 в 18:07
  • мне необходиммо импортировать из одного класса в другой значение переменой. я не знаю как это оформить?
    – SPARTAK
    16 апр 2014 в 18:15
  • webfile.ru/0b65e007063c022aef9a5ff9906734c9 -- вот ссылка на мой код !! был бы очень вам всем признателен, если бы вы взгялунли на него!!!
    – SPARTAK
    18 апр 2014 в 14:47
  • @SPARTAK запускается и пустой экран.
    – Deadkenny
    18 апр 2014 в 19:16
  • @SPARTAK, лазить по Вашему дереву файлов что-то нет желания. Может относящиеся к делу фрагменты файлов приведете здесь (в update вопроса)? -- Кстати, а тривиальный extern уже не работает?
    – avp
    18 апр 2014 в 20:55

3 ответа 3

2

Так как вы хотите (через глобальную переменную) не делается, делается все гораздо проще (в общем случае мы всегда передаем объект из одного UIViewController в другой), есть метод UITableViewDelegate:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     // вот тут у вас есть indexPath - то есть "номер строки" в табличке
     /* берем объект, например если они у вас объекты лежат в массиве objects, то будет так */ id myFruitObject = self.objects[indexPath.row]; /* если в другом месте, следовательно достаем объект оттуда */
     // дальше создаем следующий детальный экран
     MyDetailsVC *vc = [MyDetailsVC new];
     // передаем в него наш объект, скажем это было яблоко, чтобы такая конструкция сработала вам нужно будет в MyDetailsVC объявить @property (nonatomic, strong) id object;
     vc.object = myFruitObject;
     // показываем экран с описанием
     [self.navigationController pushViewController:vc animated:YES];
}

если же вы используете storyboard тут дела обстоят немного иначе, напишите в камент я объясню как быть с ней

Для сториборд реализуем в своем UIViewController метод

- (void)prepareForSegue:(UIStorybordSegue *)segue sender:(id)sender
{
     // Обычно для segue (переходов) задаются имена, чтобы идентифицировать переход, но если он у вас, скажем, один, можно и без имени
    if ([segue.identifier isEqualToString:@"details"]) {
        // дальше смысл абсолютно тот же
        // берем из сеги только что созданный UIViewController
        MyDetailsVC *vc = [segue destinationViewController];
        // Получаем индекс того объекта, что мы тока что выбрали
        NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow;
        // ну и дальше все тоже самое
        if (indexPath) {
            // передаем туда объект
            vc.object = self.objects[indexPath.row];
        }
        // единсвенное, чтобы это все работало надо выбрать single selection у UITableViewController и очищать selection при входе на экран, поскольку вам необходимо, что селекшн всегда был один и актуальный
    }
}
1
  • да я storyboard работаю
    – SPARTAK
    19 апр 2014 в 6:00
1

@SPARTAK Вот несколько полезных ссылок. https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Getting%20Started - главный ресурс разработчика. Тут и примеры кода и объяснения. https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/index.html#//apple_ref/doc/uid/TP40011343-CH2-SW1 - тут вводной курс для новичка. Как раз в нем объясняется как можно передавать значения от одного экрана к другому.

Если нет сил и желания все это читать, то посмотрите как создать singleton. Например можно создать список, к которому можно будет обращаться из любой точки программы.

0

Не надо использовать глобальные переменные, достаточно добавить @property

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    MyViewController *myViewController = [[MyViewController alloc] init];
    myViewController.myProperty = @"какие угодно данные";
    myViewController.myAnotherProperty = indexPath.row; // номер строки
    [self.navigationController pushViewController:myViewControlleranimated:YES];
}
6
  • кажется вы меня не поняли
    – SPARTAK
    18 апр 2014 в 11:57
  • пример моего приложения: таблица1: 1. офощи 2. фрукты 3. ягоды по нажатию на один из этих пунктов происходит переход например нажали фрукты: таблица2: 1. яблоки 2. груши 3. мандарины и т.д например нажали яблоко экран с информацией: все про яюлоко! витамины, виды сорта и так далее
    – SPARTAK
    18 апр 2014 в 12:00
  • так вот моя проблема в том что: я уже понял как сделать переход, чтоб если я нажимал на фрукты - выходили яюлоки груши, или если я нажимал на овощи - картошка лук и т.д у меня не получается ЭКРАН С ИНФОРМАЦИЕЙ!!! там должно быть описание!
    – SPARTAK
    18 апр 2014 в 12:03
  • я делаю условие на ЭКРАНЕ С ИНФОРМАЦИЕЙ if(_indexObzor = 0){ _detail.text == "виды сорта: фовфрвло"; } else if(_indexObzor = 0){ _detail.text == "виды сорта: aawd"; } else if(_indexObzor = 0){ _detail.text == "виды сорта: awdaw"; } только нужно еще узнать предыдущую строчку нажатия!!! мне нужно добавить в условие номер нажатия строки между таблица1 и таблица 2
    – SPARTAK
    18 апр 2014 в 12:07
  • @SPARTAK , приведите где-нибудь код полностью, совершенно непонятно что у вас собственно не получается.
    – aknew
    18 апр 2014 в 12:19

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.