- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
一切似乎都能正确加载,但是当我在我的应用程序中下拉我的表格 View 时它崩溃了,我不知道为什么。我是否遗漏了一段代码?
这是我的 viewController 代码:
import UIKit
import Firebase
import FirebaseDatabase
class FindPartiesViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// where we will store all the parties
var parties = [party]()
@IBOutlet weak var partyTable: UITableView!
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
partyTable.delegate = self
partyTable.dataSource = self
设置刷新控制:
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.refreshControl.addTarget(self, action: Selector(("refresh:")), for: UIControlEvents.valueChanged)
self.partyTable?.addSubview(refreshControl)
let ref = FIRDatabase.database().reference()
// go to firebase and get all the parties and all there info
ref.child("parties").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
let snapshotValue = snapshot.value as? NSDictionary
let name = snapshotValue?["name"] as! String
let location = snapshotValue?["location"] as! String
let description = snapshotValue?["description"] as! String
let upVotes = snapshotValue?["upVotes"] as! String
let downVotes = snapshotValue?["downVotes"] as! String
self.parties.append(party(name: name, description: description, location: location, upVotes: Int(upVotes)!, downVotes: Int(downVotes)!))
// update the table view to the all the parties
DispatchQueue.main.async {
self.refreshTableData()
}
})
}
// refreshes the table data when called
func refreshTableData(){
// go thru all the parties ansd sort them from postive to negative total votes
for i in (0 ..< self.parties.count) {
let total = self.parties[i].upVotes - self.parties[i].downVotes
if i != 0{
let oldTotal = self.parties[i-1].upVotes - self.parties[i-1].downVotes
if total > oldTotal {
let savedParty = self.parties[i]
self.parties.remove(at: i)
self.parties.insert(savedParty, at:i-1)
}
}
}
self.partyTable?.reloadData()
}
// refreshes the table data when the table is pulled down
func refresh(sender:AnyObject) {
print("REFRESHED")
refreshTableData()
}
表格设置:
// creates the number of cells in the table
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return parties.count
}
// define all the cells
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Make table cells the show the party
let cell = partyTable.dequeueReusableCell(withIdentifier: "Cell")
let nameLabel = cell?.viewWithTag(1) as! UILabel
nameLabel.text = parties[indexPath.row].name
let locationLabel = cell?.viewWithTag(2) as! UILabel
locationLabel.text = parties[indexPath.row].location
let totalVotesLabel = cell?.viewWithTag(3) as! UILabel
totalVotesLabel.text = (String(parties[indexPath.row].upVotes - parties[indexPath.row].downVotes))
return cell!
}
}
更新:
我得到的错误信息:
2016-11-07 19:00:58.625 Lit[6530:1248106] -[Lit.FindPartiesViewController refresh:]: unrecognized selector sent to instance 0x7fe618d2e230
2016-11-07 19:00:58.638 Lit[6530:1248106] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Lit.FindPartiesViewController refresh:]: unrecognized selector sent to instance 0x7fe618d2e230'
*** First throw call stack:
(
0 CoreFoundation 0x000000010e82634b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010e28721e objc_exception_throw + 48
2 CoreFoundation 0x000000010e895f34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x000000010e7abc15 ___forwarding___ + 1013
4 CoreFoundation 0x000000010e7ab798 _CF_forwarding_prep_0 + 120
5 UIKit 0x000000010ec4bb88 -[UIApplication sendAction:to:from:forEvent:] + 83
6 UIKit 0x000000010edd12b2 -[UIControl sendAction:to:forEvent:] + 67
7 UIKit 0x000000010edd15cb -[UIControl _sendActionsForEvents:withEvent:] + 444
8 UIKit 0x000000010f6e9dac -[UIRefreshControl _setRefreshControlState:notify:] + 525
9 UIKit 0x000000010f6f2231 -[_UIRefreshControlModernContentView _snappingMagic] + 53
10 UIKit 0x000000010f6f0c70 -[_UIRefreshControlModernContentView didTransitionFromState:toState:] + 205
11 UIKit 0x000000010f6e9d3d -[UIRefreshControl _setRefreshControlState:notify:] + 414
12 UIKit 0x000000010f6e8b18 -[UIRefreshControl _setVisibleHeight:] + 71
13 UIKit 0x000000010f6e91ea -[UIRefreshControl _update] + 374
14 UIKit 0x000000010ed33f5a -[UIScrollView(UIScrollViewInternal) _notifyDidScroll] + 174
15 UIKit 0x000000010ed1e919 -[UIScrollView setContentOffset:] + 478
16 UIKit 0x000000010eda96b7 -[UITableView setContentOffset:] + 316
17 UIKit 0x000000010ed23351 -[UIScrollView _updatePanGesture] + 2346
18 UIKit 0x000000010f18c289 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 57
19 UIKit 0x000000010f194028 _UIGestureRecognizerSendTargetActions + 109
20 UIKit 0x000000010f191af7 _UIGestureRecognizerSendActions + 227
21 UIKit 0x000000010f190d83 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 891
22 UIKit 0x000000010f17ce56 _UIGestureEnvironmentUpdate + 1395
23 UIKit 0x000000010f17c89b -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 521
24 UIKit 0x000000010f17ba7e -[UIGestureEnvironment _updateGesturesForEvent:window:] + 286
25 UIKit 0x000000010ecba7ad -[UIWindow sendEvent:] + 3989
26 UIKit 0x000000010ec67a33 -[UIApplication sendEvent:] + 371
27 UIKit 0x000000010f459b6d __dispatchPreprocessedEventFromEventQueue + 3248
28 UIKit 0x000000010f452817 __handleEventQueue + 4879
29 CoreFoundation 0x000000010e7cb311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
30 CoreFoundation 0x000000010e7b059c __CFRunLoopDoSources0 + 556
31 CoreFoundation 0x000000010e7afa86 __CFRunLoopRun + 918
32 CoreFoundation 0x000000010e7af494 CFRunLoopRunSpecific + 420
33 GraphicsServices 0x00000001121afa6f GSEventRunModal + 161
34 UIKit 0x000000010ec49f34 UIApplicationMain + 159
35 Lit 0x000000010c419b3f main + 111
36 libdyld.dylib 0x0000000110e6d68d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
最佳答案
由于您没有使用发件人,只需将其删除即可。
func refresh() {
print("REFRESHED")
refreshControl?.endRefreshing()
refreshTableData()
}
然后在将目标添加到刷新控件时,不要在 refresh
选择器之后使用 :
(因为您删除了 sender 参数)。
同样通过使用#selector(refresh)
而不是Selector("refresh")
,您将在编译前知道选择器是否被识别。
self.refreshControl.addTarget(self, action: #selector(refresh), for: .valueChanged)
关于swift - UITable下拉刷新崩溃应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476661/
我有两个 UITable,一个在另一个之上。用户可以点击并将元素从顶部表格拖动到底部。当元素被拖动到底部表格上时,它就会消失。 当表格并排时,不会出现此问题。 线索/症状可能是;当您滚动顶部表格时,如
谁能指导我如何做这样的事情: 我设法完成了第一个和最后一个屏幕,我需要在它们之间插入另一个屏幕。 有什么教程可以学习吗? 非常感谢:) 最佳答案 使用 uitableview 创建一个 uinavig
我有一个链接到我的 viewController 的 UITable,它具有 DataSource 和 Delegate 的扩展。然而,当我查看 View Controller 上的连接时,它们没有链
我的应用程序包含 UITableView 并显示来自 SQLite 的数据。我想在用户滚动 tableview 时始终显示 UITableView 的标题。如何实现它? 最佳答案 您必须将 View
我的应用程序因内存问题(使用太多内存)而崩溃。当我从 TableView 打开足够多的对象时,就会发生这种情况。我已经在互联网上搜索了这个问题,我可以看出这可能是因为内存从未被释放过。但我该如何释放它
我想知道如何使 UITable 具有列。或者,是否有更好的方法来创建一个看起来像网格的实际表格。我想要 3 列。我该怎么做? 最佳答案 UITableView 不支持多列。但是,如果您创建自己的自定义
我创建了一个 matfile,其中存储了不断被用户行为覆盖的数据。这发生在函数“test()”中。 n=1 while n < 5 myVal = double(Test704(1, 780,
我一直在搜索并尝试让我的 UITableView 节标题允许多行文本,但我无法让它工作。这是它显示的内容: 但文字是:埃弗顿足球俱乐部的主场 Jersey 是什么颜色? 我目前正在尝试的是: func
我正在构建一个简单的 iOS 应用程序,它有两个 UITableViewController,我用它来创建一个用于日期导航的水平表 (ScrollingDateViewController) 和第二个
我有一个简单的 UITable 实现和一个名为 fruits 的数组。摘自this例子。唯一的区别是我为 UITable 使用 UIViewController 而不是 UITableViewCont
我有一个名为 gatherData 的函数,它遍历 Firebase 数据库中的目录和数据。因为它使用异步函数,所以返回数据并不是一个明显的选择。我使用以前问题的其他解决方案来确定我需要一个回调系统。
我有一个 UITableViewController,它有两个部分。第一部分显示一个带有居中文本的单元格,内容为添加新幻灯片。第二部分显示当前幻灯片。 当用户点击添加新幻灯片单元格时,新的UITabl
如何在 UITable 中制作用于移动行的自定义按钮? 我希望它是透明的。 (而不是这个:) 另一件事是,当单元格移动时,它有阴影。是否可以删除它? 最佳答案 试试这个... 您必须通过继承 UITa
我使用以下代码将图像添加到 UITableview。我想不通的是如何让背景图像随表格滚动(不是每个单元格中的图像,而是 UITable 后面的大图像)。我需要背景图像可滚动并与 UITable 滚动同
我想更改 UITableView 部分标题的颜色。 最佳答案 使用以下代码作为您的答案 -(UIView *)tableView:(UITableView *)tableView viewForHea
我正在尝试在 UITableViewController 内的每个 UITable 单元格中创建一个按钮。我在我的 Storyboard中的单元格中放置了一个按钮,但是当我尝试在我的 swift 文件
出于性能原因,我在 Matlab 中使用旧版本的 uitable。我正在尝试更改表格标题的单元格边框颜色。目前,两个列标题单元格彼此无法区分。我尝试了以下方法: 自定义列渲染器但仍然无法更改表格标题边
我已经实现了这个滑动删除但是作为一个清除按钮将 uitableviewcells 文本标签重置为空...当这个方法被执行时它完美地工作..但是当用户在滑动清除后触摸同一个单元格时没有任何反应... 然
我有一个带有展开/折叠部分的表格 View 的应用程序,遵循 Apple 的 Table View Animations & Gestures sample app 中的示例。 .当一个项目被添加到一
我有一张 table ,我正在为其做一些特殊的加载。用户开始滚动到底部。当用户滚动到顶部附近时,我通过 ScrollView 委托(delegate)方法检测到这一点,我快速加载一些额外的内容,并填充
我是一名优秀的程序员,十分优秀!