【问题标题】:How to show different Views with a single table section?如何使用单个表格部分显示不同的视图?
【发布时间】:2017-10-27 21:09:15
【问题描述】:

我有一个 tableView,在我的 indexpath.section 4 我有“我的帐户”,当点击它时,它应该根据情况显示两个不同的视图,我想做的是:

  1. 当用户第一次来到应用程序的这一部分时,显示登录视图控制器

  2. 如果用户已登录,则显示保存用户信息的“帐户视图控制器”,否则显示常规的“登录视图控制器”

一切都与导航控制器连接以在视图之间移动,因为我使用 SWRevealVIewController 来使用侧边菜单或抽屉菜单

这是我正在尝试使用的代码

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print(indexPath.section)

    let isUserLoggedIn = UserDefaults.standard.bool(forKey: "isUserLoggedIn")

    if indexPath.section == 4 {

        if isUserLoggedIn {

            let AccountVC = self.storyboard?.instantiateViewController(withIdentifier: "AccountViewController") as! AccountViewController

            self.present(AccountVC, animated: true, completion: nil)

        }else{

            let LoginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginView") as! LoginViewController

            self.present(LoginVC, animated: true, completion: nil)
}

    }
}

谢谢

【问题讨论】:

    标签: ios swift uitableview uiviewcontroller swift3


    【解决方案1】:

    你的登录机制是什么?通常你会在设备上存储某种令牌等(最好不要存储密码和用户名)。您可以将令牌存储在您的 db/user defaults/realm/file 或您首选的数据存储中。

    如果您正在使用情节提要,请检查是否存在令牌并使用简单的 if 来执行此或那个 segue。如果您以编程方式执行此操作,只需调用 present() 或 push() 以显示相应的屏幕。

    更新:抱歉,我还没有查看代码。对我来说它看起来是正确的,那么到底是什么问题?

    【讨论】:

    • 主要问题是一旦用户登录,“登录视图控制器”不会执行到“帐户视图控制器”的segue
    • 据我所知,没有任何转场,因为您通过情节提要手动实例化视图控制器并以编程方式呈现它。如果你想使用segues,你应该调用“performSegue(withIdentifier)”而不是实例化视图控制器并调用“present()”
    • 现在我开始工作了,但“帐户视图”不会保留,这意味着如果用户转到表格视图的另一部分并返回“我的帐户”,那么它会返回“登录查看”
    • 我不确定您所说的“帐户查看”和“返回”是什么意思。听起来您在 cellForRowAtIndexPath 中返回了错误的单元格
    • 或者您的意思是当用户返回并点击帐户单元格时,它会再次显示错误的视图控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多