WedX - журнал о программировании и компьютерных науках

Как я могу изменить свой первоначальный контроллер представления, когда пользователь принимает лицензионное соглашение?

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

Мой первоначальный VC — EULA. Когда пользователь соглашается, я хочу изменить начальный VC на просмотр журнала. В этом тестовом проекте у меня есть два представления с IBAction для Bar Button Item, которые будут переходить проект от VC к VC2. Я пытаюсь настроить код для изменения исходного VC в AppDelegate с помощью

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

        let storyboard = UIStoryboard(name: "View Controller", bundle: NSBundle.mainBundle())
        let licenseAccepted = ?
        var vc: UIViewController?
        if !licenseAccepted {
            vc = storyboard.instantiateViewControllerWithIdentifier("View Controller2")
        } else {
            vc = storyboard.instantiateInitialViewController()
        }
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.rootViewController = vc
        window?.makeKeyAndVisible()
        return true

}

но это не работает. Во-первых, let licenseAccepted = ? неверно. Я нашел это в другом наборе кода и подумал, что это может сработать, но нет. Кроме того, как установить переменную, если пользователь принимает лицензию в AppDelegate? Следует ли это делать в первоначальном VC, во втором VC, который станет первоначальным, или где-то еще?

Я использую Xcode 7.1 и Swift2, если это помогает.

Я могу быть далеко от базы, или я могу быть нажатием клавиши или двумя. Я просто не понимаю этого. Ваша помощь будет оценена по достоинству.


  • Где вы храните свое согласие на получение лицензии? В NSUserDefaults? 27.10.2015
  • @Paulw11 Paulw11 Я еще не зашел так далеко, но сколько я читал / видел, это то, что я собираюсь сделать. 27.10.2015
  • Но это, кажется, суть вашего вопроса - как узнать, принята ли лицензия? - Логическое значение, хранящееся в NSUserDefaults, было бы одним из подходов. 27.10.2015
  • В реальном проекте есть элемент панели кнопок, который нужно принять, и один, чтобы отклонить его. Если пользователь откажется, я перейду к практически нефункциональному представлению, которое попросит их удалить приложение и станет первоначальным VC, который никогда не изменится. Если пользователь согласится, я перейду к экрану входа в систему, который станет начальным VC в будущем. Я сохраню принятие только для записи, к которой можно будет получить доступ в случае деликта. 27.10.2015
  • Однако у меня возникли проблемы с пониманием вашего вопроса. У вас уже есть код для выбора контроллера представления на основе принятия EULA. Существует множество примеров того, как хранить логическое значение и NSUserDefaults и как их извлекать. Если хотите, вы можете сохранить два логических значения — одно для принятия и одно для отклонения. Если accept=true, перейдите к входу в систему. Если reject=true, перейдите к экрану отклонения, иначе отобразите лицензионное соглашение. Лично я бы сделал так, чтобы, если accept не был правдой, он просто показывал лицензионное соглашение каждый раз, когда они запускались, и не беспокоился о том, что экран говорит им удалить приложение. 27.10.2015
  • @Paulw11 Paulw11 Я переосмыслю то, что делаю, и попробую предложенную вами логическую стратегию. Я все еще хотел бы посмотреть, как я могу изменить первоначальный VC после первоначального взаимодействия с пользователем, если кто-нибудь, читающий это, захочет присоединиться. Спасибо за отзыв. 27.10.2015
  • Лично я бы установил начальную сцену на сцену, которая будет показана после представления лицензионного соглашения, и в viewWillAppear для этого контроллера представления проверьте принятие лицензионного соглашения. Если это не принято, представьте сцену EULA модально. Когда в этой сцене нажата кнопка «Принять», обновите NSUserDefaults и отключитесь от модального представления. 27.10.2015

Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]