【发布时间】:2017-01-01 22:25:50
【问题描述】:
我有一个启用了 ConfigureTableViewController 的 tableview,它有两个静态单元格用户和位置。 用户表视图单元通过 usersSegue 连接到 ListUserTableViewController。 Locations tableview 单元格通过 segue locationsSegue 连接到 LocationTableViewController
ListUserTableViewController 有一个协议:
protocol UserSelectionDelegate{
func userDidSelectUser(userIdentifier:NSString)
}
我通过实现委托 UserSelectionDelegate 从 ListUserTableViewController 中选择用户并将其传递给 ConfigureTableViewController
class ConfigureTableViewController: UITableViewController, UserSelectionDelegate {
…
…
// function pulls user’s fullName from Core Data table based on userIdentifier
func userDidSelectUser(userIdentifier : NSString) {
var fetchedResults: [User] = []
let context = (UIApplication.shared.delegate as AppDelegate).persistentContainer.viewContext
userIdentifierString = userIdentifier
do {
fetchedResults = try context.fetch(User.fetchRequest())
}
catch {
print ("fetch task failed")
}
if fetchedResults.count > 0 {
for user in fetchedResults{
let aUser:User = user
if (aUser.uniqueId! == userIdentifierString as String) {
let fullName = aUser.firstName! + " " + aUser.lastName!
print("selected user full name: " + (fullName as String))
}
else {
continue
}
}
}
}
}
到目前为止一切顺利..
但是现在,我想从数据库中提取用户名并通过 segue 位置发送到 LocationTableViewController
当我从 ListUserTableViewController 转换到 ConfigureTableViewController 时,我有用户名,但是当我离开 ConfigureTableViewController 并转到 LocationTableViewController 时,我失去了 fullName 的范围。
我必须以某种方式将计算出的 fullName 的值存储在某个永久存储中,所以我应该将它放在 CoreData 中的表中吗?我想避免这种情况,这似乎需要做很多工作。
我可以使用某种委托链接,以便 LocationTableViewController 可以实现在 ConfigureTableViewController 中定义的委托,并从其他已经实现并在其范围内具有 fullName 的 UserSelectionDelegate 中提取数据。
请指教,如何解决这个问题?
【问题讨论】:
标签: ios uitableview core-data tableviewcell