나는 Firebase의 모든 사용자를 목록에 표시하는 UITableViewController
을 가지고 있습니다. 사용자 한 명을 탭하면 Interface Builder에서 준비된 정적 TableView 레이아웃이있는 다른 UITableViewController
이 표시되어 사용자 속성을 편집 할 수 있습니다. 선택한 사용자의 UID를 DetailTableViewController
에 전달하여 현재 사용자 데이터를 모두로드하려고합니다.스위프트 3 : TableViewController에서 다른 TableViewController로 문자열 전달
편집 :이 질문과 정확히 일치하지는 않습니다. UITableViewController
에서 다른 곳으로 데이터를 전달하고 싶습니다. UITableViewController
정상이 아닙니다. 세부 사항 UIViewController
!
이것은 첫 번째 TableViewController
의 현재 코드입니다.
누군가 나를 도울 수 있습니까? 나는 그것을 얻지 않는다.
UserListTableViewController.swift : UserListTableViewController.swift에서
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
class UserListTableViewController: UITableViewController {
var dbRef:FIRDatabaseReference!
var user = [User]()
var writeSelectedUID:String!
var selectedUID: String = "Mister X"
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.startObservingDB()
}
func startObservingDB() {
dbRef.observe(.value, with: { (snapshot:FIRDataSnapshot) in
var newUser = [User]()
for user in snapshot.children {
let userObject = User(snapshot: user as! FIRDataSnapshot)
newUser.append(userObject)
}
self.user = newUser
self.tableView.reloadData()
}) { (error:Error) in
print(error.localizedDescription)
}
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return user.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "User Cell", for: indexPath) as! CustomUserListTableViewCell
// Configure the cell
let userRow = user[indexPath.row]
cell.userFirstLastNameLabel?.text = "\(userRow.firstName!) \(userRow.lastName!)"
cell.userUsernameLabel?.text = "@\(userRow.username!)"
}
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//let selectedUID = user[indexPath.row]
let selectedUserRow = user[indexPath.row]
self.writeSelectedUID = "\(selectedUserRow)"
performSegue(withIdentifier: "editUser", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
let viewcontroller = segue.destination as! ManageUserSettingsTableViewController
// Pass the selected object to the new view controller.
if(segue.identifier == "editUser") {
viewcontroller.usernameTextField.text! = "\(self.writeSelectedUID)"
print("Var: \(self.writeSelectedUID)")
}
}
}
버전이 나에게 내가 가진 같은 오류가 발생했습니다 : '치명적인 오류 : 언 래핑하는 동안 예기치 않게 nil을 발견했습니다. '해결 방법을 추가했습니다. –