[英]reload table view after modal view dismissal
I've looked at a lot of other questions on this subject. 我已经看过许多关于这个问题的其他问题。 But they all lead to the same thing "view did load" "view did appear" and "view will appear" and Ive put
但是它们都导致相同的结果:“视图已加载”,“视图已出现”和“视图将出现”,艾夫
tableview.reloadData()
in all of them but after dismissal of the modal view it still doesn't reload till I terminate the app and then I run again. 在所有视图中,但是在关闭模式视图后,它仍然不会重新加载,直到我终止应用程序,然后再次运行。 I have seen that you can do this with notification center and have seen that Here and I tried that method but it didn't seem to work for me.
我已经看到您可以在通知中心中执行此操作,并看到在这里和我尝试了该方法,但是它似乎对我不起作用。 Thanks for any Help in advance!!!
感谢您的任何帮助!
import UIKit
class mainScreen: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableview: UITableView!
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
// MARK: - Table View Setup
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if allPeople.count == theAssignments.count {
return allPeople.count
}else {
print("else in number of rows in section BAD")
return allPeople.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PeopleTVCell", for: indexPath)
cell.textLabel?.text = theAssignments[indexPath.row]
cell.detailTextLabel?.text = allPeople[indexPath.row]
return cell
}
// MARK: - System setup
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableview.allowsSelection = false
/////////here
tableview.reloadData()
}
override func viewWillAppear(_ animated: Bool) {
////////here
tableview.reloadData()
}
override func viewDidAppear(_ animated: Bool) {
let NamesObject = UserDefaults.standard.object(forKey: "Name" + whatGroup)
if let tempItems = NamesObject as? [String] {
allPeople = tempItems
print("saved data in main (Name)")
}
let AssignmentObject = UserDefaults.standard.object(forKey: whatGroup + "Assignment")
if let tempItems = AssignmentObject as? [String] {
theAssignments = tempItems
print("saved data in main (Assignments)")
}
////////here
tableview.reloadData()
}
// MARK: - the Exit Segue
@IBAction func exitSegue(segue: UIStoryboardSegue) {
/////////here
tableview.reloadData()
isAddingName = 2
print("Exited to main")
}
}
this is where I would add things 这是我要添加东西的地方
@IBAction func saveButton(_ sender: UIButton) {
if isInMain == true {
if IsAddingAssignment == true {
// MARK: Add Assignment
let AssignmentObject = UserDefaults.standard.object(forKey: whatGroup + "Assignment") as? [String]
var Assignment: [String]
if let tempItems = AssignmentObject {
Assignment = tempItems
Assignment.append("\(EnteredObjectTextFeild.text!)")
print(Assignment)
} else {
Assignment = [EnteredObjectTextFeild.text!]
print("user defaults error 2")
}
UserDefaults.standard.set(Assignment, forKey: whatGroup + "Assignment")
EnteredObjectTextFeild.text = ""
}else {
// MARK: Add Name
if AllNames.contains("\(EnteredObjectTextFeild.text!)"){
if namesForEachGroup.contains(EnteredObjectTextFeild.text!) {
EnteredObjectTextFeild.text = ""
AlertAction(Title: "Name Exists", Message: "This name already exists in this group", alerTitle: "OK")
}else {
addNameToGroup()
EnteredObjectTextFeild.text = ""
}
}else {
let NameObject = UserDefaults.standard.object(forKey: "Name") as? [String]
var Name: [String]
if let tempItems = NameObject {
Name = tempItems
Name.append("\(EnteredObjectTextFeild.text!)")
print(Name)
} else {
Name = [EnteredObjectTextFeild.text!]
print("user defaults error 3")
}
UserDefaults.standard.set(Name, forKey: "Name")
addNameToGroup()
EnteredObjectTextFeild.text = ""
NamePicker.reloadAllComponents()
AsignmentPicker.reloadAllComponents()
}
}
}else if isInMain == false {
// MARK: Add Group
if allGroups.contains("\(EnteredObjectTextFeild.text!)"){
EnteredObjectTextFeild.text = ""
AlertAction(Title: "Group Exists", Message: "This Group already exists", alerTitle: "OK")
}else {
let groupsObject = UserDefaults.standard.object(forKey: "Groups") as? [String]
var groups: [String]
if let tempItems = groupsObject {
groups = tempItems
groups.append(EnteredObjectTextFeild.text!)
print(groups)
} else {
groups = [EnteredObjectTextFeild.text!]
print("Bad")
}
UserDefaults.standard.set(groups, forKey: "Groups")
EnteredObjectTextFeild.text = ""
}
NamePicker.reloadAllComponents()
AsignmentPicker.reloadAllComponents()
}
NamePicker.reloadAllComponents()
AsignmentPicker.reloadAllComponents()
}
// MARK: Add Name func
func addNameToGroup(){
let nameObject = UserDefaults.standard.object(forKey: "Name" + whatGroup) as? [String]
var NameForGroup: [String]
if let tempItems = nameObject {
NameForGroup = tempItems
NameForGroup.append("\(EnteredObjectTextFeild.text!)")
print(NameForGroup)
} else {
NameForGroup = [EnteredObjectTextFeild.text!]
print("user defaults error 4")
}
UserDefaults.standard.set(NameForGroup, forKey: "Name" + whatGroup)
namesForEachGroup = NameForGroup
print("saved to group")
EnteredObjectTextFeild.text = ""
NamePicker.reloadAllComponents()
AsignmentPicker.reloadAllComponents()
}
and this is where I get back to the first VC 这是我回到第一个VC的地方
@IBAction func BackPressed(_ sender: UIButton) {
if isInMain == true {
performSegue(withIdentifier: "FromAddToMain", sender: UIButton())
}else {
performSegue(withIdentifier: "FromAddToGroup", sender: UIButton())
}
}
我将此代码添加到每个出口segue
theAssignments = UserDefaults.standard.array(forKey: whatGroup + "Assignments") as! [String]
The simplest solution is how to pass the data in a undwin-perform, the configuration is; 最简单的解决方案是如何以非双赢的方式传递数据,配置为: a function is created in the parent controller that will be the one that receives the execution focus:
在父控制器中创建一个函数,该函数将成为接收执行焦点的函数:
@IBAction func close (segue: UIStoryboard) {
tableView.reload ()
}
Then in the son controller the undwin is created segue (backwards) assigning the close function previously created, and in the output function execute the line. 然后,在子控制器中,创建undwin(向后),以分配先前创建的关闭函数,并在输出函数中执行该行。
performsegue (whithIdentifier: "undwinSegueclose", sender: self)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.