我正在尝试从我下载的项目中处理这段代码,并尝试在我的代码中使用。在viewDidLoad中,将通过“ New Puzzle”填充pickerView,或者如果用户在以前的VC中保存了游戏,则将保存该游戏。最初编写此代码的方式是,用户保存了游戏,然后通过pickerView返回到此控制器。在我的“ mod”中,我将两个VC嵌入了导航控制器中,因此获得了一个不错的“后退”按钮以返回到pickerView控制器。但是,加载pickerView是在viewDidLoad函数中,据我所知,该函数仅加载一次。
有人可以帮助我,需要移动viewDidLoad中的哪些项目。并且在移动时,是否需要进入viewWillAppear或viewDidAppear?我的理解是应该在viewWillAppear中。
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Games"
DispatchQueue.main.async {
if !Settings.shared.adsEnabled {
self.removeTableViewHeader()
} else {
//self.tableView.layoutTableHeaderView()
}
}
//Picker Stuff
// Connect data:
self.picker.delegate = self
self.picker.dataSource = self
copyDatabaseIfNeeded("puzzles")
// open database
if sqlite3_open(finalDatabaseUrl2.path, &db2) != SQLITE_OK {
//print("error opening db")
}
else{
}
pickerData.append("New Puzzle")
//retrieve all dates from previous puzzles and add them to pickerview
var queryStatement2 = ""
queryStatement2 = "SELECT * FROM puzzle;"
self.statement2 = nil
if sqlite3_prepare_v2(self.db2,queryStatement2,-1,&self.statement2,nil) == SQLITE_OK{
while(sqlite3_step(self.statement2) == SQLITE_ROW){
let date = sqlite3_column_text(self.statement2,2)
let comp = sqlite3_column_text(self.statement2,3)
let dateString = String(cString: date!)
let compString = String(cString: comp!)
pickerData.append("\(dateString) - \(compString)")
}
//sqlite3_reset(self.statement2)
sqlite3_finalize(self.statement2)
}
}
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Games"
DispatchQueue.main.async {
if !Settings.shared.adsEnabled {
self.removeTableViewHeader()
} else {
//self.tableView.layoutTableHeaderView()
}
}
//Picker Stuff
// Connect data:
self.picker.delegate = self
self.picker.dataSource = self
}
override func viewDidAppear() {
copyDatabaseIfNeeded("puzzles")
pickerData = []
// open database
if sqlite3_open(finalDatabaseUrl2.path, &db2) != SQLITE_OK {
//print("error opening db")
}
else{
}
pickerData.append("New Puzzle")
//retrieve all dates from previous puzzles and add them to pickerview
var queryStatement2 = ""
queryStatement2 = "SELECT * FROM puzzle;"
self.statement2 = nil
if sqlite3_prepare_v2(self.db2,queryStatement2,-1,&self.statement2,nil) == SQLITE_OK{
while(sqlite3_step(self.statement2) == SQLITE_ROW){
let date = sqlite3_column_text(self.statement2,2)
let comp = sqlite3_column_text(self.statement2,3)
let dateString = String(cString: date!)
let compString = String(cString: comp!)
pickerData.append("\(dateString) - \(compString)")
}
//sqlite3_reset(self.statement2)
sqlite3_finalize(self.statement2)
}
}
您可以这样更新代码。