我正在尝试将幻灯片添加到我应用的表格中。我目前正在关注YouTube上的指南here,并且在初始化幻灯片以刷新时,我的应用程序因SIGABRT错误而崩溃。
我的代码:
// 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的新手,这是我的第一个应用程序,所以如果我做了一件非常抱歉的事情。
答案 0 :(得分:1)
在您编写的代码中
// 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()
}
答案 1 :(得分:0)
你不能只把config.xml
放在你想要的任何地方。代码中的位置具有含义。学习斯威夫特。了解它的工作原理。
与此同时,我会告诉你这个问题的答案。改变这种结构:
func uiRefreshControlAction
对此:
override func viewDidLoad() {
super.viewDidLoad()
// ...
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
// ...
}
然后改变这个:
override func viewDidLoad() {
super.viewDidLoad()
// ...
}
func uiRefreshControlAction() {
self.myTableView.reloadData()
}
到此:
action: "uiRefreshControlAction:"
最后,更新到Xcode 7.3,你不可能犯这种错误!