将数据插入 swift class 类型的数组
inserting data into array of type swift class
如何将文本字段文本的值插入 class 类型的数组?
基本上,我有两个视图控制器,一个显示项目列表和使用以下 class
创建的代码
class Courses {
var courseName : String
var courseCode : Int
init(courseName : String, courseCode : Int){
self.courseName = courseName
self.courseCode = courseCode
}
}
//从 class
创建数组
var courses : [Courses] = [Courses(courseName: "Unix Linux", courseCode: 101),
Courses(courseName: "ASP.Net", courseCode: 202),
Courses(courseName: "CISCO", courseCode: 203),
Courses(courseName: "Photoshop Editing", courseCode: 306)
]
第二个视图控制器有两个文本字段,允许某人将新课程添加到现有数组。我如何实现这一点并使用来自不同视图控制器的新项目重新加载 table 视图
我在第二个视图 controller.swift 文件中添加了 var 课程:[课程] = []。不知道还能做什么。
我试过这样的东西
@IBAction func addCourseButton(_ sender: Any) {
if courseName.text != "" {
let courseCodeString = Int(courseCode.text!)
let item = Courses(courseName: "\(courseName.text)", courseCode: courseCodeString!)
courses.append(item)
for i in courses {
print(i.courseName)
}
}
}
您的问题有两种可能的解决方案。
- 使用协议
- 使用通知观察者
在第一种情况下,
在第二个 ViewController.swift 中添加协议,就在 class 定义
之上
protocol UpdateCourseAfterAddProtocol:class {
func classListUpdated(with course: Courses)
}
class SecondViewController:UIViewController {
weak var dele:UpdateCourseAfterAddProtocol? = nil
@IBAction func addCourseButton(_ sender: Any) {
if courseName.text != "" {
let courseCodeString = Int(courseCode.text!)
let item = Courses(courseName: "\(courseName.text)", courseCode: courseCodeString!)
dele?.classListUpdated(with: item)
}
}
}
将 Main.storyboard 中的 Segue 名称添加到 "firstToSecond" 或任何名称
在您的 table 视图存在的第一个视图控制器中(假设名称是 FirstViewController)
class FirstViewController {
// Bar button Action
@IBAction func addCoursePressed(_ send:UIBarButton) {
self.performsegue(with:"firstToSecond")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "firstToSecond" {
let toViewController = segue.destination as! SecondViewController
toViewController.dele = self
}
}
}
extension FirstViewController: UpdateCourseAfterAddProtocol {
func classListUpdated(with course: Courses) {
self.courses.append(course)
self.tableView.reloadData()
}
}
如何将文本字段文本的值插入 class 类型的数组?
基本上,我有两个视图控制器,一个显示项目列表和使用以下 class
创建的代码class Courses {
var courseName : String
var courseCode : Int
init(courseName : String, courseCode : Int){
self.courseName = courseName
self.courseCode = courseCode
}
}
//从 class
创建数组var courses : [Courses] = [Courses(courseName: "Unix Linux", courseCode: 101),
Courses(courseName: "ASP.Net", courseCode: 202),
Courses(courseName: "CISCO", courseCode: 203),
Courses(courseName: "Photoshop Editing", courseCode: 306)
]
第二个视图控制器有两个文本字段,允许某人将新课程添加到现有数组。我如何实现这一点并使用来自不同视图控制器的新项目重新加载 table 视图
我在第二个视图 controller.swift 文件中添加了 var 课程:[课程] = []。不知道还能做什么。 我试过这样的东西
@IBAction func addCourseButton(_ sender: Any) {
if courseName.text != "" {
let courseCodeString = Int(courseCode.text!)
let item = Courses(courseName: "\(courseName.text)", courseCode: courseCodeString!)
courses.append(item)
for i in courses {
print(i.courseName)
}
}
}
您的问题有两种可能的解决方案。
- 使用协议
- 使用通知观察者
在第一种情况下,
在第二个 ViewController.swift 中添加协议,就在 class 定义
之上protocol UpdateCourseAfterAddProtocol:class {
func classListUpdated(with course: Courses)
}
class SecondViewController:UIViewController {
weak var dele:UpdateCourseAfterAddProtocol? = nil
@IBAction func addCourseButton(_ sender: Any) {
if courseName.text != "" {
let courseCodeString = Int(courseCode.text!)
let item = Courses(courseName: "\(courseName.text)", courseCode: courseCodeString!)
dele?.classListUpdated(with: item)
}
}
}
将 Main.storyboard 中的 Segue 名称添加到 "firstToSecond" 或任何名称 在您的 table 视图存在的第一个视图控制器中(假设名称是 FirstViewController)
class FirstViewController {
// Bar button Action
@IBAction func addCoursePressed(_ send:UIBarButton) {
self.performsegue(with:"firstToSecond")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "firstToSecond" {
let toViewController = segue.destination as! SecondViewController
toViewController.dele = self
}
}
}
extension FirstViewController: UpdateCourseAfterAddProtocol {
func classListUpdated(with course: Courses) {
self.courses.append(course)
self.tableView.reloadData()
}
}