Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何初始化新屏幕并转到它,同时在后台将其添加到表视图_Ios_Swift_Xcode_Uitableview - Fatal编程技术网

Ios 如何初始化新屏幕并转到它,同时在后台将其添加到表视图

Ios 如何初始化新屏幕并转到它,同时在后台将其添加到表视图,ios,swift,xcode,uitableview,Ios,Swift,Xcode,Uitableview,我试图直接进入一个通常通过点击表格视图单元格进入的屏幕-基本上,用户在屏幕a上输入一个页面名称,然后进入表格视图屏幕B,他们输入的名称现在是表格视图中的第一个也是唯一一个单元格。然后他们点击该单元格到达屏幕C 现在,我想将屏幕B从等式中剪切出来-我将把该表嵌入到一个滑出菜单中,这样我就不想显示它,我只想在后台更新该表 这是到目前为止我的代码,全部在设置页面(屏幕A): 这是prepareforsgue,当用户完成应用程序注册并按“完成”时调用: 这是Firebase的观察员,负责在用户输入名称后

我试图直接进入一个通常通过点击表格视图单元格进入的屏幕-基本上,用户在
屏幕a
上输入一个页面名称,然后进入表格视图
屏幕B
,他们输入的名称现在是表格视图中的第一个也是唯一一个单元格。然后他们点击该单元格到达
屏幕C

现在,我想将
屏幕B
从等式中剪切出来-我将把该表嵌入到一个滑出菜单中,这样我就不想显示它,我只想在后台更新该表

这是到目前为止我的代码,全部在设置页面(
屏幕A
):

这是
prepareforsgue
,当用户完成应用程序注册并按“完成”时调用:

这是Firebase的观察员,负责在用户输入名称后更新表视图:

    private func observeRooms() {
        // Observe method to listen for new channels being written to Firebase
        let roomVc = RoomsTableViewController()

        roomVc.roomRefHandle = roomVc.roomRef.observe(.childAdded, with: { (snapshot) -> Void in
            let roomData = snapshot.value as! Dictionary<String, AnyObject>
            let id = snapshot.key

            if let uid = FIRAuth.auth()?.currentUser?.uid {
                if let name = roomData["name"] as! String!, name.characters.count > 0 {
                    roomVc.rooms.append(Room(id: id, name: name, participants: [uid]))
                    roomVc.tableView.reloadData()
                } else {
                    print("Error! Could not decode channel data")
                }
            }
        })
    }
private func observer ooms(){
//观察方法以侦听写入Firebase的新通道
让roomVc=RoomsTableViewController()
roomVc.roomRefHandle=roomVc.roomRef.observe(.childAdded,带有:{(快照)->Void in
让roomData=snapshot.value为!字典
让id=snapshot.key
如果让uid=FIRAuth.auth()?.currentUser?.uid{
如果让name=roomData[“name”]作为!String!,name.characters.count>0{
附加(文件室(id:id,名称:name,参与者:[uid]))
roomVc.tableView.reloadData()
}否则{
打印(“错误!无法解码通道数据”)
}
}
})
}
这是按下“完成”按钮的IBAction:

@IBAction func setupDoneButtonPressed(_ sender: Any) {

    setUserInfo()
    observeRooms()

    let room = rooms  // <-- This is where I need to indicate that I want to go to the first room in the table
    self.performSegue(withIdentifier: "initChat", sender: room)
}
@IBAction func setupDoneButtonPressed(uu发送方:任意){
setUserInfo()
observeRooms()

让room=rooms/用于更新表视图:

self.tableView.reloadData()

您需要做的是:在用户输入搜索值并按下按钮后,将执行setupDoneButtonPressed(),之后,您必须将新数据设置为全局变量。设置数据后,您必须重新加载de tableview。我认为这可能会有所帮助,如果您尝试过,请告诉我。

要更新表视图,请使用:

self.tableView.reloadData()

您需要做的是:在用户输入搜索值并按下按钮后,setupDoneButtonPressed()将被执行,之后,您必须将新数据设置为全局变量。设置数据时,您必须重新加载de tableview。我认为这可能会有所帮助,如果您尝试过,请告诉我。

我确实使用
roomVc.tableview.reloadData()在
observeRooms
函数中重新加载表视图
。它有效吗?我检查了你的代码,我不确定它的“rooms”变量是否有数据。它没有,它看起来肯定是rooms没有获得数据,尽管我不知道我还能做什么-我有所有通常在RoomsTableViewController中运行的代码,而不是在安装控制器中(当然减去实际的tableview方法)这样我就可以绕过rooms控制器。这是rooms控制器:和setup控制器:。我确实使用
roomVc.tableview.reloadData()
observeRooms
函数中重新加载了表视图。它能工作吗?我查看了您的代码,但我不确定它是否为“rooms”变量有数据。它没有,看起来肯定是rooms没有得到数据,尽管我不知道我还能做什么-我有所有通常在RoomsTableViewController中运行的代码,而不是在安装控制器中(当然减去实际的tableview方法)所以我可以绕过房间控制器。这是房间控制器:和设置控制器:。