- 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/
我们知道,当使用 hibernate 对数据库进行批量更新时(即使在 HQL 中),所做的更改不会复制到存储在当前 session 中的实体。 所以我可以调用 session.refresh 来加载对
我正在做一个项目,所有的东西都保存在事件中,所以服务器需要一些时间来响应新数据。我正在使用 Fluent 等待使用 ajax 的页面,但是这个不使用任何 ajax。所以我想刷新页面检查是否有新项目,如
我有一个从 Vector 创建的 JTable。 如何刷新 JTable 以显示添加到 Vector 的新数据? 最佳答案 当 TableModel 发生更改时,您的 JTable 应该会自动更新。我
有没有办法使用下面的代码来刷新已经存在的 div id,而不是刷新时间? window.onload = startInterval; function startInterval() {
我更新了在 Shiny Server 上运行的 Shiny 应用程序使用的 DataSet.RData。但是, Shiny 的应用程序仍在旧数据上运行。我已通过浏览器历史记录清除并重新启动浏览器几次,
我的应用程序中有一个无限滚动的网格面板(ExtJs 4.2.1),类似于 this example .用户可以单击刷新按钮,然后必须使用数据库中的数据更新网格的行。我在刷新按钮处理程序中调用 stor
我不知道这三种方法中哪一种最适合我。他们都为我工作。有谁知道刷新、更新和重画之间的区别吗? 最佳答案 根据在线文档: Refresh - 重新绘制屏幕上的控件。 Call Refresh method
有什么办法吗 ICollectionView.Refresh() 或者 CollectionViewSource.GetDefaultView(args.NewValue).Refresh(); 在
这个问题已经有答案了: Updating address bar with new URL without hash or reloading the page [duplicate] (4 个回答)
我有一个 javascript 设置超时以在 10 秒后关闭 div,并且我想在 div 关闭时添加页面刷新。我正在使用的代码如下。 var container_close_sec = "1
我有一组具有以下名称的页面.... update1.php update2.php update3.php update4.php update5.php update6.php update7.ph
如果是则触发js函数。我可以使一个复选框保持选中状态,并在页面刷新时检查值并选中“checked”,并提交以下内容... checked="checked" /> 你都不记得触发js函数。 这是我的
我正在尝试刷新 php 脚本以在数据库更新时显示更新的内容。我首先构建了我的 php,然后刷新代码,然后合并它们。但是,脚本不会更新。有谁知道为什么吗? $(document).ready
当我要删除的节点扩展集合类型时,Grails中有一个错误阻止我使用removeFrom *。直接从关联中删除节点不会更新二级缓存。 A hasMany B 有什么方法可以使关联缓存手动无效或强制重新加
我正在使用 hibernate 和 mysql 来抽象一个数据库,以便在 java 驱动的网站中使用。我使用 hibernate 很好地解决了所有查询,但似乎无法弄清楚如何使用它进行更新、插入和删除,
如何通过调用 oncreateview 方法重新创建 fragment ?我有一个 fragment ,用于通过表单插入新数据,单击按钮后,我想通过删除在 EditText 中输入的数据来重新创建 f
当我从一个到另一个时,我试图刷新我的观点。我知道我应该将刷新代码放在 viewWillAppear 中,但我不知道该放什么代码。 你们能帮帮我吗? 谢谢! 最佳答案 在您看来,请调用 setNeeds
我正在开发 iPhone 应用程序并希望使用: CFStreamCreatePairWithSocketToHost(NULL, url, port, &serverReadStream, &serv
看到我已经创建了一个用于登录用户的脚本。而且我还添加了设置选项卡,以便用户可以编辑他们的设置!但是当我尝试它时,mysql 表中的数据发生了变化,但配置文件中显示的用户名和用户电子邮件保持不变!当我注
好的。这就是它的样子。 当我启动应用程序时,我从服务器收到的第一件事是数据: {name: "test", type: "checkbox" checked: true, } 这使得其中一个复选框
我是一名优秀的程序员,十分优秀!