UITableView 部分 headers 不同步滚动
UITableView sections headers don't scroll synchronously
我在包含部分的 table 视图中有一个奇怪的行为。当我滚动 table 所有部分时 headers 停留在该位置,下面的 table 视图滚动。仅当我 scroll/touch 和 headers 都同步滚动时。知道这里出了什么问题吗?
class TVController < UITableViewController
def viewDidLoad
super
@sections = [{:title=>"30.03", :bookings=>["Opening Balance"]},
{:title=>"31.03", :bookings=>["Thai", "Coffee"]},
{:title=>"02.04", :bookings=>["Pizza"]},
{:title=>"03.04", :bookings=>["Nido, View", "Coffee ", "Withdrawel ", "Coffee "]},
{:title=>"07.04", :bookings=>["Mautgebühren "]},
{:title=>"11.04", :bookings=>["Tipp Hofer Alpl ", "Meral ", "Menterschwaige", "Eis"]},
{:title=>"12.04", :bookings=>["Flaucher"]},
{:title=>"14.04", :bookings=>["Thai "]},
{:title=>"25.04", :bookings=>["ATM", "Samen Schmitz", "Edeka ", "Maelu ", "Clearence"]},
{:title=>"26.04", :bookings=>["Auerdult ", "Schneebesen"]},
{:title=>"28.04", :bookings=>["Thai"]},
{:title=>"30.04", :bookings=>["Bahnhof "]},
{:title=>"05.05", :bookings=>["Thai"]},
{:title=>"07.05", :bookings=>["Valleys "]},
{:title=>"10.05", :bookings=>["Café "]}]
@table = UITableView.alloc.initWithFrame(self.view.bounds, style:UITableViewStyleGrouped)
@table.dataSource = self
@table.delegate = self
self.view.addSubview @table
end
def tableView(tableView, cellForRowAtIndexPath: indexPath)
@reuseIdentifier ||= 'ACCOUNT_TABLE_CELL'
cell = tableView.dequeueReusableCellWithIdentifier(@reuseIdentifier) || begin
UITableViewCell.alloc.initWithStyle(UITableViewCellStyleDefault, reuseIdentifier:@reuseIdentifier)
end
cell.textLabel.text = self.booking(indexPath)
cell
end
def numberOfSectionsInTableView(tableView)
self.sections.length
end
def tableView(tableView, numberOfRowsInSection: section)
self.sections[section][:bookings].length
end
def tableView(tableView, titleForHeaderInSection: section)
self.sections[section][:title]
end
def booking(indexPath)
@sections[indexPath.section][:bookings][indexPath.row]
end
end
如果我正确理解你的场景(请原谅我):
table 视图中 header 的目的是您目前正在发生的事情。 Headers 应该出现在行顶部的视图中,直到 header 的所有行都被滚动,一旦所有行都被滚动,header 也会移动它自己.
如果您想 header 与行一起滚动,您实际上应该考虑为此目的制作一行而不是 header,因此不会创建任何部分。
如果您想使用 headers 进行操作,请按照已提供的 link "JRG-Developer" 进行操作:Change Default Scrolling Behavior of UITableView Section Header
但是,如果您尝试创建像行一样的正常滚动 headers,那么我建议为此目的使用行并创建自定义行来实现 header ].
RubyMotion Motion 论坛中 caram 的回答
If you inherit from UITableViewController, self.view is already a tableView, so
you end up with 2 tableView. Just delete @table = UITableView.alloc.init...
http://community.rubymotion.com/t/uitableview-sections-headers-dont-scroll-synchronously/525
我在包含部分的 table 视图中有一个奇怪的行为。当我滚动 table 所有部分时 headers 停留在该位置,下面的 table 视图滚动。仅当我 scroll/touch 和 headers 都同步滚动时。知道这里出了什么问题吗?
class TVController < UITableViewController
def viewDidLoad
super
@sections = [{:title=>"30.03", :bookings=>["Opening Balance"]},
{:title=>"31.03", :bookings=>["Thai", "Coffee"]},
{:title=>"02.04", :bookings=>["Pizza"]},
{:title=>"03.04", :bookings=>["Nido, View", "Coffee ", "Withdrawel ", "Coffee "]},
{:title=>"07.04", :bookings=>["Mautgebühren "]},
{:title=>"11.04", :bookings=>["Tipp Hofer Alpl ", "Meral ", "Menterschwaige", "Eis"]},
{:title=>"12.04", :bookings=>["Flaucher"]},
{:title=>"14.04", :bookings=>["Thai "]},
{:title=>"25.04", :bookings=>["ATM", "Samen Schmitz", "Edeka ", "Maelu ", "Clearence"]},
{:title=>"26.04", :bookings=>["Auerdult ", "Schneebesen"]},
{:title=>"28.04", :bookings=>["Thai"]},
{:title=>"30.04", :bookings=>["Bahnhof "]},
{:title=>"05.05", :bookings=>["Thai"]},
{:title=>"07.05", :bookings=>["Valleys "]},
{:title=>"10.05", :bookings=>["Café "]}]
@table = UITableView.alloc.initWithFrame(self.view.bounds, style:UITableViewStyleGrouped)
@table.dataSource = self
@table.delegate = self
self.view.addSubview @table
end
def tableView(tableView, cellForRowAtIndexPath: indexPath)
@reuseIdentifier ||= 'ACCOUNT_TABLE_CELL'
cell = tableView.dequeueReusableCellWithIdentifier(@reuseIdentifier) || begin
UITableViewCell.alloc.initWithStyle(UITableViewCellStyleDefault, reuseIdentifier:@reuseIdentifier)
end
cell.textLabel.text = self.booking(indexPath)
cell
end
def numberOfSectionsInTableView(tableView)
self.sections.length
end
def tableView(tableView, numberOfRowsInSection: section)
self.sections[section][:bookings].length
end
def tableView(tableView, titleForHeaderInSection: section)
self.sections[section][:title]
end
def booking(indexPath)
@sections[indexPath.section][:bookings][indexPath.row]
end
end
如果我正确理解你的场景(请原谅我):
table 视图中 header 的目的是您目前正在发生的事情。 Headers 应该出现在行顶部的视图中,直到 header 的所有行都被滚动,一旦所有行都被滚动,header 也会移动它自己.
如果您想 header 与行一起滚动,您实际上应该考虑为此目的制作一行而不是 header,因此不会创建任何部分。
如果您想使用 headers 进行操作,请按照已提供的 link "JRG-Developer" 进行操作:Change Default Scrolling Behavior of UITableView Section Header
但是,如果您尝试创建像行一样的正常滚动 headers,那么我建议为此目的使用行并创建自定义行来实现 header ].
RubyMotion Motion 论坛中 caram 的回答
If you inherit from UITableViewController, self.view is already a tableView, so you end up with 2 tableView. Just delete @table = UITableView.alloc.init...
http://community.rubymotion.com/t/uitableview-sections-headers-dont-scroll-synchronously/525