我正在进行自动调整tableview,如tableview高度将根据其内容进行更改。为此,我使用此代码
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
dispatch_async(dispatch_get_main_queue(),{
self.tblReceipt.sizeToFit()
var frame = self.tblReceipt.frame
frame.size.height = self.tblReceipt.contentSize.height
self.tblReceipt.frame = frame
}
我能够做到这一点。
比我在桌面视图中添加按钮底部。 从tableview设置顶部位置我正在使用此代码
let pinTop = NSLayoutConstraint(item: self.btnPrint, attribute: .Top, relatedBy: .Equal,
toItem: self.tblReceipt, attribute: .Bottom, multiplier: 1.0, constant: 10)
self.btnPrint.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activateConstraints([pinTop])
我这样做是因为无论桌面视图的大小是多少。按钮应该总是来自tableview。
但这不起作用。以下是错误的屏幕截图
UITableView委派方法
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrReceipt.count
}
数据源方法
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:PrintCell = (tblReceipt.dequeueReusableCellWithIdentifier("PrintCell"))! as! PrintCell
cell.lblProductName.text = arrReceipt[indexPath.row].objectForKey("product_name") as? String
cell.lblProductPrice.text = String(format:"%.2f", arrReceipt[indexPath.row]["product_price"]!!.doubleValue)
return cell
}
答案 0 :(得分:3)
您需要将按钮放在UITableView
的最后一个单元格中,以便您可以创建自定义单元格,如下所示。
Goto File-> New-> Cocoa Touch Class然后命名yourCell并创建Xib
现在点击newaly创建的Xib并设计你的单元格。在您的情况下,您可以在单元格中放置一个按钮并应用一些autoLayout约束,如下所示
现在在自定义单元格类中创建按钮的IBOutlet。你定制的单元类应该看起来像这样。
import UIKit
class YourTableViewCell: UITableViewCell {
@IBOutlet weak var yourButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
class func cellForTableView(tableView: UITableView, atIndexPath indexPath: NSIndexPath) -> YourTableViewCell {
let kYourTableViewCellIdentifier = "kYourTableViewCellIdentifier"
tableView.registerNib(UINib(nibName: "YourTableViewCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: kYourTableViewCellIdentifier)
let cell = tableView.dequeueReusableCellWithIdentifier(kYourTableViewCellIdentifier, forIndexPath: indexPath) as! YourTableViewCell
return cell
}
}
您的自定义单元格现在可以使用了。所以在你的tableViewController类cellForRowAtIndexPath
中编写此代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if (indexPath.row == (arrReceipt.count)) {
let cell = YourTableViewCell.cellForTableView(tableView, atIndexPath: indexPath)
// code for last cell
return cell
} else {
let cell:PrintCell = (tblReceipt.dequeueReusableCellWithIdentifier("ButtonCell"))! as! PrintCell
// code for other rows in tableView
return cell
}
}
并在numberOfRowsInSection
中返回yourDataSourceArray.count + 1
我希望这会有所帮助。如果您发现任何困难,请告诉我。
答案 1 :(得分:0)
为什么不考虑在代码中创建一个完整的UIView,然后将按钮放在需要的位置。示例:FooterView?
我找到了这段代码:
CGRect frame = CGRectMake(0,0,320,40);
UIView *footerView = [[UIView alloc] initWithFrame:frame];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton addTarget:self action:@selector(btnAddRowTapped:) forControlEvents:UIControlEventTouchUpInside];
aButton.frame = frame;
[footerView addSubView:aButton];
[yourTableNmae setTableFooterView:footerView];