如何将我的表格视图倒置,以便新添加的单元格出现在顶部而不是按钮?
Posted
技术标签:
【中文标题】如何将我的表格视图倒置,以便新添加的单元格出现在顶部而不是按钮?【英文标题】:How can i turn my tableview upside down so new added cells appear at the top and not the button? 【发布时间】:2017-12-27 10:19:36 【问题描述】:我有一个问题,希望任何人都可以帮助我。 我正在尝试以某种方式创建我的表格视图,以便将新数据添加到表格视图的顶部而不是底部。如果你看下面的图片,我先输入 a,最后输入 d,但我希望它们的方向相反,这样它们就会出现 d、c、b、a,如果我添加了 e,它会出现在顶部.
我已经尝试过使用
tableViewOutlet.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi))
and
cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
只是把我的表格视图和单元格颠倒过来,效果很好!唯一的问题是我的表格视图现在将从屏幕底部开始,当页面填满时,我必须向上滚动而不是向下滚动。
Screenshot of my situation (here)
希望有人能帮帮我,帮帮我!
最好的问候克里斯托弗
【问题讨论】:
您可以每次在 0 索引处添加新对象。 如果您只关心单元格的顺序,通常的做法是为核心数据中的每个实体分配一个NSDate
时间戳(或者正如 SH_Khan 指出的那样,一个增量 ID ),并以此为基础进行排序。如果是 UI 问题,那么它是一个广泛的主题,有多种可能的解决方案。
【参考方案1】:
尝试对数组进行降序排序以将整数值添加到您的模型数组并对其进行降序排序
struct mainItem
var id: Int
var userNumber: String
var address:String
init(id: Int, userNumber: String, address: String )
self.id = id
self.userNumber = userNumber
self.address = address
var arrRet = [mainItem]()
arrRet = arrRet.sorted(by:
var m1 = Int($0.id)
var m2 = Int($1.id)
return m1! > m2!
)
【讨论】:
嗨汗,我的应用程序使用 coreData,所以我排序的是汽车的实体,其中我有值、日期、价格、升和公里。但是是的,我可以尝试以 int 的形式添加一个 ID,看看我是否可以对其进行排序。去试试,谢谢! 假设您希望数据按排序(正向或反向)顺序,而不是与输入方式相反。例如,如果输入的是 A、G、E、D,这并不意味着需要对任何内容进行排序,只是它应该在表中作为 D、E、G、A。 添加的项目将具有更高的 id,因此降序排序会将其置于单元格顶部 好点。出于某种原因,我完全跳过了添加 ID。【参考方案2】:因此,假设您无法更改数据的提供方式(即对其进行排序),那么您可以更改访问数据的顺序。
所以改变这个:
let data = dataArray[indexPath.row]
到这里:
let data = dataArray[dataArray.count - indexPath.row + 1]
这样做你只是以相反的方式访问数据数组。
所以我有一个 ["a", "b", "c", "d", "e"] 的测试数据数组,并使用我的方法计算如下:
indexPath.row = 0 --- (5 - 0 - 1) = 4
indexPath.row = 1 --- (5 - 1 - 1) = 3
indexPath.row = 2 --- (5 - 2 - 1) = 2
indexPath.row = 3 --- (5 - 3 - 1) = 1
indexPath.row = 4 --- (5 - 4 - 1) = 0
所以你已经颠倒了你访问数组的顺序。
(不要乱用变换,因为那只会是一个受伤的世界)
【讨论】:
不,数学是正确的,我有一个在 Xcode 中运行的示例。括号没有区别,因为dataArray.count - indexPath.row - 1
与dataArray.count - (indexPath.row - 1)
相同,(dataArray.count - indexPath.row) - 1
相同。我将使用我正在使用的示例数据更新问题。 (有一条关于数学不正确的评论,但现在已经消失了)
indexPath.row 对我来说不是一个值,因为我使用核心数据。当我调用 indexPath.row 我得到 您可以使用 Swift 数组的 reversed() 方法。
当用户输入字符串时,你会将它附加到 dataArray:-
var dataArray: [String] = ["a", "b", "c", "d"]
dataArray.append("e")
在 cellForRowAtIndexPath 中:-
let data = dataArray.reversed()[indexPath.row]
cell.textLabel!.text = data
【讨论】:
以上是关于如何将我的表格视图倒置,以便新添加的单元格出现在顶部而不是按钮?的主要内容,如果未能解决你的问题,请参考以下文章