Swift iOS 中的表格视图
tableView in Swift iOS
我需要一些关于下面代码的帮助。由于某种原因,歌曲列表未显示在 table 中。从我这边看一切都很好。如果有人能看到明显的东西,请指出。这是我的 swift 代码:
func getMusicFilesInDirectory() -> [String] {
// get the documents folder url
let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!
// get the directory contents (including folders)
do {
let directoryContents = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions())
print(directoryContents)
} catch let error as NSError {
print(error.localizedDescription)
}
// filter the directory to extract only Wav Files
do {
let directoryUrls = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions())
print(directoryUrls)
let wavFilesDir = directoryUrls.filter(){ [=12=].pathExtension! == "wav" }.map{ [=12=].lastPathComponent! }
wavFiles = ["Music Files:\n" + wavFilesDir.description]
} catch let error as NSError {
print(error.localizedDescription)
}
return wavFiles
}
// table view
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//return wavFiles.count;
return getMusicFilesInDirectory().count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = getMusicFilesInDirectory()[indexPath.row]
cell.textLabel?.text = wavFiles[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell#\(indexPath.row)")}
在遵循以下人员的一些线索后,我修改了代码并添加了以下方法。目前我仍然没有在我的 table 中显示列表,原因是无法在存储的目录中访问音乐文件。一旦他们被移动到文档目录,一切都应该得到解决。完成后我会 post 另一个更新。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
getFileCount({(success: Bool, error: String)-> Void in
if success{
tableView.reloadData();
} else {
print("No wave files Found");
}
})
//print("You selected cell#\(indexPath.row)")
}
func getFileCount (completionHandler : (success: Bool, error: String) -> Void) -> [String] {
if wavFiles.count > 0 {
completionHandler(success: true, error: "none");
}else {
completionHandler(success: false, error: "No files found");
}
return wavFiles
}
func sampleFunction (completionHandler : (success : Bool, error : String) -> Void) -> [String] {
var someVariable = ["value1","value2","value2"];
if someVariable.count > 0 {
completionHandler(success: true, error: "");
} else {
completionHandler(success: false, error: "Some Problem");
}
return someVariable;
}
var dataHolder = sampleFunction({(success: Bool, error : String)-> Void in
if success{
tableView.reloadData();
} else {
print("Some Error");
}
})
这是您可以尝试实现的示例代码。
我建议完成处理程序,因为您正在从一些外部来源或类似来源获取所有值,因此执行过程将在检索部分在后台工作时完成。
所以没有必要每次都使用这些处理程序。
我需要一些关于下面代码的帮助。由于某种原因,歌曲列表未显示在 table 中。从我这边看一切都很好。如果有人能看到明显的东西,请指出。这是我的 swift 代码:
func getMusicFilesInDirectory() -> [String] {
// get the documents folder url
let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!
// get the directory contents (including folders)
do {
let directoryContents = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions())
print(directoryContents)
} catch let error as NSError {
print(error.localizedDescription)
}
// filter the directory to extract only Wav Files
do {
let directoryUrls = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions())
print(directoryUrls)
let wavFilesDir = directoryUrls.filter(){ [=12=].pathExtension! == "wav" }.map{ [=12=].lastPathComponent! }
wavFiles = ["Music Files:\n" + wavFilesDir.description]
} catch let error as NSError {
print(error.localizedDescription)
}
return wavFiles
}
// table view
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//return wavFiles.count;
return getMusicFilesInDirectory().count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = getMusicFilesInDirectory()[indexPath.row]
cell.textLabel?.text = wavFiles[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell#\(indexPath.row)")}
在遵循以下人员的一些线索后,我修改了代码并添加了以下方法。目前我仍然没有在我的 table 中显示列表,原因是无法在存储的目录中访问音乐文件。一旦他们被移动到文档目录,一切都应该得到解决。完成后我会 post 另一个更新。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
getFileCount({(success: Bool, error: String)-> Void in
if success{
tableView.reloadData();
} else {
print("No wave files Found");
}
})
//print("You selected cell#\(indexPath.row)")
}
func getFileCount (completionHandler : (success: Bool, error: String) -> Void) -> [String] {
if wavFiles.count > 0 {
completionHandler(success: true, error: "none");
}else {
completionHandler(success: false, error: "No files found");
}
return wavFiles
}
func sampleFunction (completionHandler : (success : Bool, error : String) -> Void) -> [String] {
var someVariable = ["value1","value2","value2"];
if someVariable.count > 0 {
completionHandler(success: true, error: "");
} else {
completionHandler(success: false, error: "Some Problem");
}
return someVariable;
}
var dataHolder = sampleFunction({(success: Bool, error : String)-> Void in
if success{
tableView.reloadData();
} else {
print("Some Error");
}
})
这是您可以尝试实现的示例代码。
我建议完成处理程序,因为您正在从一些外部来源或类似来源获取所有值,因此执行过程将在检索部分在后台工作时完成。
所以没有必要每次都使用这些处理程序。