我创建了一个由CloudKit备份的登录页面。
我想知道如果登录名具有特定值时如何创建条件序列,然后根据该值将用户定向到View Controller
详细来说,我想连接三个Segues:
登录id segue:LoginSuccessSegue
人员标签栏ID segue:idStaffTabBar
学生标签栏ID segue:idStudentTabBar
第一关LoginSuccessSegue
:
登录视图控制器具有一个显示标识ID LoginSuccessSegue,用于连接到职员标签栏控制器和学生标签栏控制器。
第二关idStaffTabBar
:
执行queryProfileType()
后,它将在列表中查找配置文件类型,以检查用户配置文件是教师值还是其他值。然后,如果是这样,“ LoginSuccessSegue”将通过使用its segue
idStaffTabBar`自动将用户带到人员标签栏控制器“ StaffBookedVC.self”。
第三关idStudentTabBar
:
如果用户不是老师,则在按下登录按钮后,通过使用idStudentTabBar重定向到学生选项卡栏控制器“ stdBookingVC.self”或
如何通过segues和cloud kit查询在多个视图中实现自动条件登录?
这是登录按钮的代码:
@IBAction func btnSignInTapped(sender: UIButton)
{
let userEmailAddress = userEmailAddressTextField.text
let userPassword = userPasswordTextField.text
if(userEmailAddress!.isEmpty || userPassword!.isEmpty)
{
notifyUser("Empty fields", message: "all fields are required")
}
print("fetching is in progress")
queryProfileType()
print("\nfetching had stopped")
}//end of signInbtn
func queryProfileType()
{
queryCredentials()
print("\nProfile Query starting")
//execute query
let organizers = ["Teacher || Youtuber || Instagrammer || "]
let predicate = NSPredicate(format: "ProfileType = '\(organizers)' ")
print("\nThis is the predicate\n\(predicate)")
let query = CKQuery(recordType: "RegisteredAccounts", predicate: predicate)
publicDatabase!.performQuery(query, inZoneWithID: nil) { results, error in
if (error != nil)
{
print(error)
}else
{
if (results! == organizers)
{
self.performSegueWithIdentifier("idStaffTabBar", sender: StaffBookedVC.self)
}else{
self.performSegueWithIdentifier("idStudentTabBar", sender: stdBookingVC.self)
}
print("\(results)\nthese are the printed results")
}
}
let firstFetch = CKFetchRecordsOperation()
let secondFetch = CKFetchRecordsOperation()
secondFetch.addDependency(firstFetch)
let queue = NSOperationQueue()
queue.addOperations([firstFetch, secondFetch], waitUntilFinished: false)
}
这是情节提要剧集Storyboard的图片
如果您的答案将包含这些方法,请向我展示一些示例:
应该执行SegueWithIdentifier和prepareForSegue
这对我也不起作用
self.presentViewController(SignInNavigationVCTabBars, animated: true,
{ results, error in
if (results! == organizers)
{
self.performSegueWithIdentifier("idStaffTabBar", sender: StaffUITABbarVC.self)
}else{
self.performSegueWithIdentifier("idStudentTabBar", sender: StdUITABbarVC.self)
}
}
`
最佳答案
您需要执行presentModalViewController
之类的操作,才能在navigationController
方法中首先显示queryProfileType
。然后,在加载navigationController
之后执行一些智能逻辑以确定要走的路由。因此需要自定义UINavigationController
。
或更简单的方法:
将您的loginViewController
移动到导航控制器堆栈中,然后将两个现有的segue(即idStaffTabBar
和idStudentTabBar
)链接到它。这样可以解决问题。