Появление PFLoginViewController

Я пытаюсь настроить отображение Parse PFLoginViewController. Вот мой класс для одного из моих viewController.

import UIKit

import Parse
import ParseUI

class FirstViewController: PFLogInViewController, UITableViewDataSource, UITableViewDelegate,  PFLogInViewControllerDelegate {

    @IBOutlet weak var tableView: UITableView!

    var textArray:NSMutableArray! = NSMutableArray()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {


        return self.textArray.count
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell


        cell.textLabel?.text = self.textArray.objectAtIndex(indexPath.row) as? String

        return cell
    }
}

Чего я не понимаю, так это почему при запуске приложения появляется PFLoginViewController? Я не делаю код установки, чтобы он появился, поэтому я не понимаю, почему он появляется.

Я предполагаю, что мой viewController каким-то образом автоматически заменяется на PFLogInViewController, потому что я включил его в топ?

Мой проект - приложение Swift.


person Phil    schedule 06.08.2015    source источник


Ответы (1)


Ваш FirstViewController является PFLogInViewController (подклассом). Если FirstViewController является rootViewController окна вашего приложения, или если это первый/корневой контроллер представления контейнера, который сам является rootViewController окна, то вы увидите PFLogInViewController при запуске приложения.

Когда вы определяете класс в Swift, первый тип после двоеточия является суперклассом этого класса (или, если первый тип после двоеточия является протоколом, ваш класс является корневым классом, который не наследуется от суперкласса).

person Stuart    schedule 06.08.2015
comment
Мой первоначальный viewController — это контроллер панели вкладок. FirstViewController — первая вкладка. - person Phil; 06.08.2015
comment
И какой контроллер первого представления вашего контроллера панели вкладок? UITabBarController — это просто контроллер контейнера, который отображает содержимое контроллеров представления в своем свойстве viewControllers. - person Stuart; 06.08.2015
comment
Это контроллер TabBar ->NavigationController->FirstViewController (который является UITableView, хотя не так, как кажется, он стал PFLogInController), поэтому я не понимаю, куда делся мой UITableView? в идеале PFLoginViewController должен быть чем-то, что появляется необязательно, если это необходимо. - person Phil; 06.08.2015
comment
Таким образом, FirstViewController — это первый контроллер представления содержимого, который видит ваше приложение при запуске (оба UITabBarController и UINavigationController являются контроллерами представления контейнера — они не отображают собственное содержимое, а только содержимое своих дочерних элементов). FirstViewController не является UITableView - табличное представление является представлением, а не контроллером представления. FirstViewController является подклассом PFLogInViewController, поэтому вы видите его при запуске приложения. Не желая показаться резким, я думаю, что есть некоторые основы, которые вам нужно пересмотреть, прежде чем продолжить. - person Stuart; 06.08.2015
comment
Извините, я думаю, вы хотели сказать, что FirstViewController — это UITableViewController. Это все еще не совсем так, хотя вы заставили его вести себя как один, присвоив ему tableView и сделав его делегатом таблицы и источником данных. Несмотря на это, ваш контроллер представления по-прежнему будет наследовать все поведение PFLogInViewController, поскольку он является подклассом этого класса. Какого потока навигации вы пытаетесь достичь в своем приложении (когда/где должен отображаться ваш контроллер представления входа в систему)? - person Stuart; 06.08.2015
comment
Ха, это совсем не звучит резко, вы правы, это помогло бы, если бы у меня было более базовое понимание всего этого, прямо сейчас я пытаюсь учиться, просто делая, navigationController содержит TableView, который находится внутри a viewController, поток, который я хочу, - это просто PFLogInController, который появляется, если пользователь не вошел в систему или если пользователь в какой-то момент нажимает кнопку входа в систему, хорошо, так что в основном мне нужно создать совершенно новый viewController для PFLogInViewController? хотя в примерах контроллер появляется через код, а не раскадровку - person Phil; 06.08.2015
comment
Это выходит за рамки этого вопроса, но да, ваш PFLogInController должен быть отдельным ВК, который вы представляете (модально, скорее всего). Каждый виртуальный канал управляет «единицей» контента (единица часто — но не всегда — представляет собой «полный экран» контента), и виртуальные участники могут представлять другие виртуальные каналы. вам нужно выполнить некоторую проверку, когда ваше приложение запустится, чтобы определить, вошел ли пользователь в систему, и если это не так, создайте экземпляр своего журнала в VC и представьте его. Это можно сделать либо программно, либо с помощью переходов в вашей раскадровке, в зависимости от того, что наиболее подходит. Аналогичный процесс для кнопки входа. - person Stuart; 06.08.2015