Не работают функции, написанные на дочерних VC, следующих после TB


#1

Ребят, подскажите, никак не могу сам разобраться, читаю курсы и смотрю ролики ровно как две недели ((
Добавил схему ниже:
scheme

Из основного VC по двум кнопкам я иду в два направления, в одном из них первым на пути идет TapBar, после которого еще 3 VC. На VC есть кнопки, с переходам по segue дальше. Есть кнопки, которые должны выполнять определенные функции.
Все работает, если я не пытаюсь делать какие-либо настройки этих кнопок или писать код, который они должны выполнять.
Как только я делаю outlet и action для кнопок, то у меня вылетает при переходах через TabBar.
Отвязываю VC, который правил последним, все снова работает.
Если снова привязать VC, то он все равно вышибает в ошибки и больше не хочет работать, к какому бы классу я его не перепривязывал… Создаю , переношу все элементы, все снова ОК…(
Пробовал привязывать дочерние VC и к основному классу и каждый к своему…

В целом, подскажите, как правильно реализовать подобную схему, и как правильно должны привязываться вьюхи…

Спасибо !


#2

Какие ошибки? (_____)


#3

Если что-либо меняю в коде на дочернем VC, то у меня крашится, когда в TB я перехожу на другой VC, на котором нет кнопки с первого VC - возвращает nil, например функция скругления кнопки.
Сейчас наковырял так, что вообще сразу после запуска падает в signal SIGABRT… ((

Мне кажется у меня в целом неправильно реализована схема.

Как сделать правильно, подскажите ?
К чему привязываются VC за TB, так чтобы их функционал корректно работал ?
Для каждого VC создается свой класс, в который уже вносятся все настройки кнопок и действия которые они делают ?
Например с последнего VC я захочу слать почту (функцию почты как отдельное приложение уже разобрал, скопипастил, сделал…, но вот заставить ее работать именно с последней вьюхи не могу…)
Спасибо !


#4

можно немного подробнее, я до сих пор не могу понять как вы реализуете


#5

Есть vc, на нем две кнопки. По тапу на первую идёт переход на tabbar controller,к которому привязаны ещё vc. На начальном vc ещё висит navigatorcontrol (nc), чтобы везде была возможность вернуться назад . На первом после TB vc есть кнопка перехода на след vc. Привязывают эту кнопку к vc где она находится и меняю ее параметры, после этого при переходе по меню tb выбивает в nil…


#6

Если vc что за tb не трогаю, не привязывают к классу отдельному, то мои кнопки перехода по segue работают, но тогда я не могу в коде ничего с кнопкой сделать. А если прявязать, то выше уже как мог описал…(


#7

у вас должно быть что-то такое

rootViewController
   -- viewController
   -- tabBarController
      -- tbViewController1
      -- tbViewController2
      -- tbViewController3

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


#8

Исходя из того что успел черпануть в курсах, я так и строил приложение… но что-то пошло не так. Завтра попробую перестроить все с нуля, учитывая вышеописанную схему, с созданием отдельных файлов класса и редактированием функционала уже в отдельных файлах. Спасибо, по результату отпишусь.
А ещё такой вопросик, как правильно настроить ресайз под разные девайсы? Изначально на вьюхах имеются элементы (лейблы, имеджи, текстфилды) и они расставлены и привязаны констрейнтами для формата 9.7’. Ну соответственно если девайсы меньше -iphone, то все валится в кучу… Я либо пропустил либо не запомнил, как правильно настроить ресайз.


#9

Тут нужен @administrator. Я работаю с фиксированными значениями.


#10

Если сильно меняются экраны, то лучше отдельно рисовать. Можно использовать trait variations для этого.


#11

В целом содержимое экрана совсем не меняется. Просто из-за того что он становится меньше, вся информация не влезает. На экране имеется несколько stackView, которые уже привязаны к экрану, при поворотах экрана все нормально, но при уменьшении, размер stackView остается прежним, и он уже не помещается на экран, они лезут друг на друга. Имеется ли возможность для stakView сделать авторесайз ?
про trait variation - можно чуть подронее, пока в курсах не попадалось. Было что для stakView изменить расположение в нем horizot\vertical, а про указанный выше вариант не слышал пока ((
Спасибо !


#12

left/right constraint, без указания width для stackView - должно сработать


#13

По trait variation у нас в курсах нет, но на youtube достаточно много роликов.


#14

Ребят, спасибо ! Разобрался. Есть подозрения, что изначально я каждый следующий вью не привязывал к отдельному классу, потом в процессе пока что-то правил я к этому пришел, но у меня начали сыпаться другие ошибки, и я видимо решил что дело не в привязке. Сейчас добрал все с нуля и последовательно выполнял код на каждом из вью, предварительно связав контроллер с классом для этого вью. Остался вопрос ресайза, но он не так остро пока стоит, учитывая что это вообще что-то первое, что я делаю без видеоинструкции-курса.
Один последний вопрос, без сертификата разработчика/ID разработчика как-то вообще можно использовать это ПО на устройстве, поделиться с другом например для личного пользования ?
Я так понял, что без сертификата я даже потестить на боевом устройстве не могу, так как Xcode ругается, мол я бездарь безрукий (


#15

Как потестить чисто на своем устройстве разобрался )
Можно ли app скинуть кому-то еще и как если это возможно ?
Спасибо !


#16

Да. смотрите TestFlight - это эпловский инструмент тестинга до публикации. В connect настраивается. На телефон ставится приложение TestFlight и через него падают юзерам приложеньки для теста.