我试图设置一个待办事项列表,该列表从第二个视图控制器获取任务,并将其添加到第一个视图控制器的表视图中。我一直在关注一个受欢迎的教程,对评论的支持是有限的。好好看看其他教程和帖子,但是没有一个使用相同的表格,而且只是相当新的swift无法找到他们所拥有的链接。
错误在于第二个视图控制器上的UIButton,它触发文本移动到第一个视图,该视图是存储文本的表。
错误发生在应用程序中,并且是此行的断点。
let cell:UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier: "test")
错误信息只是lldb,并且无法在bt中看到任何有用的信息
(lldb) bt
* thread #1: tid = 0x23e9e, 0x00000001044ed5e3 ToDo Task`ToDo_Task.FirstViewController.tableView (tableView=0x00007f9721851600, indexPath=0xc000000000000016, self=0x00007f9720f6e7f0)(ObjectiveC.UITableView, cellForRowAtIndexPath : ObjectiveC.NSIndexPath) -> ObjectiveC.UITableViewCell + 35 at FirstViewController.swift:27, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1 4.1
* frame #0: 0x00000001044ed5e3 ToDo Task`ToDo_Task.FirstViewController.tableView (tableView=0x00007f9721851600, indexPath=0xc000000000000016, self=0x00007f9720f6e7f0)(ObjectiveC.UITableView, cellForRowAtIndexPath : ObjectiveC.NSIndexPath) -> ObjectiveC.UITableViewCell + 35 at FirstViewController.swift:27
frame #1: 0x00000001044ee2af ToDo Task`@objc ToDo_Task.FirstViewController.tableView (ToDo_Task.FirstViewController)(ObjectiveC.UITableView, cellForRowAtIndexPath : ObjectiveC.NSIndexPath) -> ObjectiveC.UITableViewCell + 79 at FirstViewController.swift:0
frame #2: 0x00000001050594b3 UIKit`-[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508
frame #3: 0x0000000105038fb1 UIKit`-[UITableView _updateVisibleCellsNow:isRecursive:] + 2846
frame #4: 0x000000010504ee3c UIKit`-[UITableView layoutSubviews] + 213
frame #5: 0x0000000104fdb973 UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
frame #6: 0x0000000108ed9de8 QuartzCore`-[CALayer layoutSublayers] + 150
frame #7: 0x0000000108ecea0e QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 380
frame #8: 0x0000000108ece87e QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
frame #9: 0x0000000108e3c63e QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 242
frame #10: 0x0000000108e3d74a QuartzCore`CA::Transaction::commit() + 390
frame #11: 0x0000000104f5f14d UIKit`_UIApplicationHandleEventQueue + 2035
frame #12: 0x000000010460c551 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
frame #13: 0x000000010460241d CoreFoundation`__CFRunLoopDoSources0 + 269
frame #14: 0x0000000104601a54 CoreFoundation`__CFRunLoopRun + 868
frame #15: 0x0000000104601486 CoreFoundation`CFRunLoopRunSpecific + 470
frame #16: 0x00000001087cd9f0 GraphicsServices`GSEventRunModal + 161
frame #17: 0x0000000104f62420 UIKit`UIApplicationMain + 1282
frame #18: 0x00000001044ebf1e ToDo Task`top_level_code + 78 at AppDelegate.swift:12
frame #19: 0x00000001044ebf5a ToDo Task`main + 42 at AppDelegate.swift:0
frame #20: 0x00000001069f4145 libdyld.dylib`start + 1
(lldb)
错误在此函数中
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier: "test")
cell.textLabel?.text = taskMgr.tasks[indexPath.row].name
cell.detailTextLabel?.text = taskMgr.tasks[indexPath.row].desc
return cell
}
它使用taskMgr,它位于新的可可文件中
var taskMgr :TaskManager = TaskManager()
struct task{
var name = "un-named"
var desc = "un-described"
}
class TaskManager: NSObject {
var tasks = [task]()
func addTask (name: String, desc: String){
tasks.append(task(name: name,desc: desc))
}
}
不确定这些东西是否有一个简单的解决方法,正如我所说的,我是一个快速的新手,并不想问任何过于简单的事情,但我不知道该怎么做通过它。
答案 0 :(得分:0)
使用tableView.dequeueReusableCellWithIdentifier
代替在UITableViewCell
cellForRowAtIndexPath
的实例
let cell = tableView.dequeueReusableCellWithIdentifier("Test",
forIndexPath: indexPath) as UITableViewCell
如果您使用自定义viewDidLoad
UITableViewCell
中使用之前注册您的UITableViewCell
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(TestCell, forCellReuseIdentifier: "TestCell")
}