jjzjj

ios - 模态视图关闭后重新加载 TableView

coder 2024-01-29 原文

我看过很多关于这个主题的其他问题。但它们都导致同样的事情“ View 加载”“ View 确实出现”和“ View 将出现”我已经把

tableview.reloadData()

在所有这些中,但在关闭模态视图后,它仍然不会重新加载,直到我终止应用程序然后再次运行。我已经看到您可以通过通知中心执行此操作并且已经看到 Here我试过那个方法,但它似乎对我不起作用。 提前感谢您的帮助!!!

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")
}

}

这是我要添加东西的地方

@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()
}

这是我回到第一个 VC 的地方

@IBAction func BackPressed(_ sender: UIButton) {
    if isInMain == true {

        performSegue(withIdentifier: "FromAddToMain", sender: UIButton())

    }else {

        performSegue(withIdentifier: "FromAddToGroup", sender: UIButton())

    }
}

最佳答案

最简单的解决方案是如何在 undwin-perform 中传递数据, 配置是; 在父 Controller 中创建一个函数,它将成为接收执行焦点的函数:

  @IBAction func close (segue: UIStoryboard) {
     tableView.reload ()
  }

然后在子 Controller 中创建 undwin segue(向后)分配先前创建的关闭函数,并在输出函数中执行该行。

performsegue (whithIdentifier: "undwinSegueclose", sender: self)

关于ios - 模态视图关闭后重新加载 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611655/

有关ios - 模态视图关闭后重新加载 TableView的更多相关文章

  1. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  2. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  3. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

    我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

  7. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  8. ruby - 如何关闭 ruby​​ gem "Spreadsheet?"中的文件 - 2

    下面的代码在我第一次运行它时就可以正常工作:require'rubygems'require'spreadsheet'book=Spreadsheet.open'/Users/me/myruby/Mywks.xls'sheet=book.worksheet0row=sheet.row(1)putsrow[1]book.write'/Users/me/myruby/Mywks.xls'当我再次运行它时,我会收到更多消息,例如:/Library/Ruby/Gems/1.8/gems/spreadsheet-0.6.5.9/lib/spreadsheet/excel/reader.rb:11

  9. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  10. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

随机推荐