如何将messageCell放在tableView的底部? *迅速*

时间:2015-03-22 20:16:34

标签: ios swift

聊天设置。 messagetableView底部约束附加到dockView的顶部。不幸的是,tableView messageCell并不符合在tableView上强制使用的相同约束。在我的屏幕截图中,您可以看到黄色的tableView。它从superView的顶部开始,向下延伸到UIViewDock的顶部。白色messageCell不遵循tableView。显然,messageCell是这样做的,因为只有5行消息,所以我如何让tableView底部的白色单元格开始像聊天应用程序一样?

另一个老线程中的某个人说要使用这个Obj-C。

@property (nonatomic, assign) BOOL shouldScrollToLastRow;


- (void)viewDidLoad
{
[super viewDidLoad];

_shouldScrollToLastRow = YES;
}


- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];

// Scroll table view to the last row
if (_shouldScrollToLastRow)
{
    _shouldScrollToLastRow = NO;
    [self.tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
}
}

这是正确的,我如何在Swift中完成?

enter image description here

1 个答案:

答案 0 :(得分:1)

使你的messageCell成为表格视图的页脚,因此它将始终粘在表格的底部。你可以在IB中为表添加一个视图,并给它一个IBOutlet(我在下面的代码中称我的页脚)。

    @IBOutlet weak var footer: UIView!
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.rowHeight = 44
        tableView.tableFooterView = footer
        tableView.setContentOffset(CGPoint(x: 0, y: tableView.contentSize.height), animated: false)
    }

在“发送”按钮的操作方法中,您可以执行此操作以添加新行并使表格滚动到底部,

@IBAction func sendMessage(sender: UIButton) {
        var message = messageField.text
        messages.append(message)
        let lastPath = NSIndexPath(forRow: messages.count - 1, inSection: 0)
        tableView.beginUpdates()
        tableView.insertRowsAtIndexPaths([lastPath], withRowAnimation: .Automatic)
        tableView.contentSize = CGSize(width: tableView.contentSize.width, height: tableView.contentSize.height + tableView.rowHeight)
        tableView.setContentOffset(CGPoint(x: 0, y: tableView.contentSize.height), animated: true)
        tableView.endUpdates()
    }