Ios 线程1:使用幻灯片刷新时发出信号SIGABRT错误
我正在尝试将幻灯片刷新功能添加到我的应用程序表中。我目前正在关注YouTube上找到的指南,我的应用程序在初始化幻灯片刷新时出现SIGABRT错误,导致崩溃 我的代码:Ios 线程1:使用幻灯片刷新时发出信号SIGABRT错误,ios,xcode,swift,tableview,pull-to-refresh,Ios,Xcode,Swift,Tableview,Pull To Refresh,我正在尝试将幻灯片刷新功能添加到我的应用程序表中。我目前正在关注YouTube上找到的指南,我的应用程序在初始化幻灯片刷新时出现SIGABRT错误,导致崩溃 我的代码: // outlet - table view @IBOutlet weak var myTableView: UITableView! // outet - activity indicator @IBOutlet weak var spinner: UIActivityIndicatorView! // outlet
// outlet - table view
@IBOutlet weak var myTableView: UITableView!
// outet - activity indicator
@IBOutlet weak var spinner: UIActivityIndicatorView!
// outlet - barbutton
@IBOutlet weak var menuButton: UIBarButtonItem!
// slide to refresh
let refreshControl: UIRefreshControl = UIRefreshControl()
// xml parser
var myParser: NSXMLParser = NSXMLParser()
// rss records
var rssRecordList : [RssRecord] = [RssRecord]()
var rssRecord : RssRecord?
var isTagFound = [ "item": false , "title":false, "pubDate": false ,"link":false]
// MARK - View functions
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
// pull to refresh
refreshControl.addTarget(self, action: "uiRefreshControlAction:", forControlEvents: UIControlEvents.ValueChanged)
self.myTableView.addSubview(refreshControl);
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
// set tableview delegate
self.myTableView.dataSource = self
self.myTableView.delegate = self
}
如果有人能告诉我我做错了什么,那就太好了。我是Xcode新手,这是我的第一个应用程序,所以如果我做错了什么,很抱歉。你不能把
func-uiRefreshControlAction
放在你想放的任何地方。代码中事物的位置是有意义的。学得快。了解它是如何工作的
同时,我会告诉你这个问题的答案。更改此结构:
override func viewDidLoad() {
super.viewDidLoad()
// ...
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
// ...
}
为此:
override func viewDidLoad() {
super.viewDidLoad()
// ...
}
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
然后更改此选项:
action: "uiRefreshControlAction:"
为此:
action: "uiRefreshControlAction"
最后,更新到Xcode 7.3,这样的错误你是不可能犯的 在您编写的代码中
// pull to refresh
refreshControl.addTarget(self, action: "uiRefreshControlAction:", forControlEvents: UIControlEvents.ValueChanged)
self.myTableView.addSubview(refreshControl);
换成
// pull to refresh
refreshControl.addTarget(self, action: "uiRefreshControlAction", forControlEvents: UIControlEvents.ValueChanged)
self.myTableView.addSubview(refreshControl);
因为您没有在该函数中传递任何参数,而是在操作名称中添加了“:”,这表示您将在函数中拥有参数
所以你的新代码是这样的
// MARK - View functions
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
// pull to refresh
refreshControl.addTarget(self, action: "uiRefreshControlAction", forControlEvents: UIControlEvents.ValueChanged)
self.myTableView.addSubview(refreshControl);
// set tableview delegate
self.myTableView.dataSource = self
self.myTableView.delegate = self
}
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
很好,但你忽略了一个事实,即他将其
func
编写为本地而不是方法。@matt感谢您的更新,因为您的答案涵盖了所有他可以从您的答案中获得正确答案的内容。我还是对您的答案进行了投票。你为此做出了很大贡献!在我继续之前,我很可能会了解这一点。感谢您的输入,但更改后没有效果,更改后我的RSS源没有加载,要刷新的幻灯片也没有了。您是否将其他内容与代码相同?只需从“viewDidLoad”中删除函数并将其放置outside@matt在阅读您的编辑后,不再有任何错误。今晚做完后,我肯定会更新。现在唯一的事情是旋转器不会停止。是因为RSS源没有响应,还是我需要在swift文件中执行某些操作才能在刷新源后停止?@GabeZimbric UIRefreshControl有两种方法可用于启动/停止加载指示器“-beginRefreshing-endRefreshing”,这可能会有帮助you@Pyro通过将self.refreshControl.endRefreshing()
添加到func-uiRefreshControlAction()
谢谢!