如何检查UITableViewCell是否在屏幕上完全可见(不是通过选项卡或导航栏切断)?
我可以使用以下代码获取可见单元格:
NSArray *indexes = [_tableView indexPathsForVisibleRows];
Run Code Online (Sandbox Code Playgroud)
但我想排除屏幕中不完全可见的单元格.
一切顺利,直到升级到Xcode 5.1,当我尝试在64位iOS7.1模拟器上运行时我的应用程序崩溃,但在32位模拟器上仍然很好.
崩溃消息在这里:
2014-03-18 16:58:31.451 MyApp[8645:90b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x109391530 V:|-(5)-[UILabel:0x109390630] (Names: '|':UITableViewCellContentView:0x109390060 …Run Code Online (Sandbox Code Playgroud) 我通常从来没有遇到过这个步骤的问题,但由于某种原因,当我重新设置我的故事板时,我的代码部分存在问题:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
(cell as! TableViewCell).usernameLabel.text = friendsArray[indexPath.row] as String
return cell
}
Run Code Online (Sandbox Code Playgroud)
我做了所有明显的事情,比如确保单元格标识符是"Cell".
我的错误是这样的:
无法将'UITableViewCell'(0x1094ada18)类型的值转换为'YOpub.TableViewCell'(0x106620410).
编辑:问题是我的didLoad函数中有self.tableView.registerClass(UITableViewCell.self,forCellReuseIdentifier:"Cell").删除此行后,我的代码再次运行.
我有一个这样的表视图:

当用户点击一行时,我要取消选中最后一行并选中选定的行。所以我写了这样的代码:(例如,我的lastselected = 0)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var lastIndexPath:NSIndexPath = NSIndexPath(forRow: lastSelected, inSection: 0)
var lastCell = self.diceFaceTable.cellForRowAtIndexPath(lastIndexPath) as! TableViewCell
var cell = self.diceFaceTable.cellForRowAtIndexPath(indexPath) as! TableViewCell
lastCell.checkImg.image = UIImage(named: "uncheck")
cell.checkImg.image = UIImage(named: "check")
lastSelected = indexPath.row
}
Run Code Online (Sandbox Code Playgroud)
当我连续滚动而不滚动时,一切正常。我意识到,当我运行代码并立即滚动表并选择一行时。我的程序将崩溃并显示错误:“致命错误:在展开可选值时意外发现nil”
该行显示错误:

我不知道这里有什么问题吗?
我有一个带有标签和图像的tableview.在一些细胞中,没有像我用来imageView.removeFromSuperview()将其从细胞中移除的图像.当单元格中有图像时,行高为445并且"自定义"被检查.
如何根据标签的长度动态设置行高,而不是在删除imageview后imageview的长度/大度?
我从json下载图像链接,然后在表视图开始创建其单元格后创建图像:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCellController
DispatchQueue.main.async(execute: { () -> Void in
if let url = NSURL(string: self.movies[indexPath.row].image)
{
if let data = NSData(contentsOf: url as URL)
{
let imageAux = UIImage((data: data as Data))
cell.movieImage.image = imageAux
self.tableView.reloadData()
}
}
})
cell.name = self.movies[indexPath.row].name
cell.date = self.movies[indexPath.row].date
return cell
}
Run Code Online (Sandbox Code Playgroud)
这样工作正常,但表视图变得非常慢,不是在渲染时,而是在滚动时.我一直在检查RAM和CPU,两者都非常低,但我的网络使用量不断上升但是图像已经在单元格上,所以这意味着它已经完成了.(对于这个测试我只调用2个电影的JSON,所以2个图像)
在我开始这样做之前,我的总下载量大约为200kb(带图像),现在它在我停止项目之前已超过2MB.
我做错了什么?
我有带ViewView的ViewController。在此TableView的每个单元格中,都有几个按钮(因此我不能使用didSelectRow)。
按下按钮时,我需要从操作获取父ViewController。因此,我将此函数添加到我的自定义单元格类中:
@IBAction func editBtnPressed (_ sender: Any) {
}
Run Code Online (Sandbox Code Playgroud)
我需要自我介绍才能为其添加一些子视图。我怎样才能以自己的身份访问根ViewController ?
在我的swift应用程序中,我正在显示细胞UITableView,前10个细胞包含照片.我决定为每个单元格添加一个视差效果,这样当用户上下滚动表格时 - 图像会改变它的偏移量.
这是我从我的webservice获取数据并最初将其添加到tableview的方法:
func makePostQueryForFetchingData(_ parameters: [String:AnyObject], url: String, type: String)
{
Alamofire.request(url, method: .post, parameters: (parameters), encoding: JSONEncoding.default)
.validate()
.responseJSON { response in
switch response.result {
case .success:
DispatchQueue.main.async(execute: {
items.removeAllObjects()
tview.reloadData()
if let jsonData = response.result.value as? [[String: AnyObject]] {
for singleJSON in jsonData {
if let single = SingleNode.fromJSON(JSON(singleJSON)){
self.items.add(single)
}
}
}
self.refreshController.endRefreshing()
print("before crash")
self.tview.reloadData()
print("end")
})
case .failure(let error):
print(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在启动时运行此功能 - 一切正常.但是,如果我向下滚动表格,然后快速向上滚动并拉动刷新 - 应用程序崩溃.
在拉动刷新我从上面调用函数. …
在我的应用程序中,我有一个表格视图,每个单元格中都有图像,标签和文本视图.我希望能够根据文本视图中的内容量自动调整单元格大小.(文本视图是最低的文本.)
到目前为止,我已经添加了正确的约束; 文本视图的前导,尾随,顶部和底部,并禁用滚动和编辑.
在我的tableViewController.swift文件中,我编写了这段代码:
override func viewWillAppear(_ animated: Bool) {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
但是,这不起作用,因为当我向文本视图添加更多文本时,它只是切断了.
也许这与卡片看起来有关,我在每个单元格中都有一个UIView作为卡片.
老实说,我不知道自己做错了什么
下面的图片是我的应用程序的样子,如果有人可以提供帮助,那将非常感激
当我的应用程序中选择了tableview单元格时,它将保持选中状态,直到选择了不同的单元格.
如何在与Apple的"查找我的朋友"应用程序和"查找我的iPhone"应用程序类似的一两秒之后突出显示tableview单元格.将In Miles的距离切换为In Kilometers时,您可以看到单元格突出显示,然后突出显示淡出.
tableviewcell ×10
ios ×8
swift ×8
uitableview ×8
xcode ×3
swift3 ×2
arm64 ×1
asynchronous ×1
autolayout ×1
json ×1
objective-c ×1
uiimageview ×1
viewport ×1