2015-09-18 16 views
5

Tôi có dạng xem bảng được gọi là todoTableView với các ô do người dùng tạo. Mỗi ô có Chế độ xem văn bản. Tôi muốn thay đổi chiều cao của ô theo nội dung của Chế độ xem văn bản. Đây là những gì tôi đã cố gắng:Thay đổi chiều cao ô theo nội dung của textView bên trong ô

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell 
     cell.bounds.size.height = cell.textView.bounds.size.height 

     return cell 
    } 
+0

Bạn đang sử dụng tính năng tự động trả lời? – Irfan

+0

Xem [câu hỏi này] (http://stackoverflow.com/questions/14956189/calling-heightforrowatindexpath-from-within-cellforrowatindexpath). –

+0

@Irfan Có. Phoen1xUK - Tôi không biết Mục tiêu-C – Eliko

Trả lời

21

ràng buộc textview của bạn với cell từ tất cả các bên sử dụng hạn chế biên (hàng đầu, Trailing, Top và hạn chế dưới)

enter image description here

  • Disable TextView cuộn

Trong viewDidLoad() thêm những điều sau đây.

tableView.estimatedRowHeight = 44.0 
tableView.rowHeight = UITableViewAutomaticDimension 

Điều này sẽ làm cho kích thước ô của bạn theo kích thước nội dung văn bản.

Hãy nhìn vào kết quả:

enter image description here

Bạn không cần phải viết heightForRowAtIndexPath.

+0

Vì một số lý do nó không hoạt động, có lẽ tôi không sử dụng lề như bên phải. Bạn có thể cho tôi biết cách làm cụ thể không? – Eliko

+2

Bạn có cùng trường hợp như trên không? Nếu có thì hãy chọn chế độ xem văn bản và đặt các ràng buộc hàng đầu, theo sau, trên cùng và dưới cùng của nó bằng contentView của ô. o f textview. Hãy thử điều này và cho tôi biết nếu nó giúp. Cảm ơn – Irfan

+0

Ok Tôi vừa mới thực hiện nó và nó vẫn không hoạt động .. giữ văn bản nhưng chiều cao ô không thay đổi – Eliko

-3

Bạn cũng nên thực hiện heightForRowAtIndexPath:.

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return // Calculate your custom row height here. 
} 
+0

Tôi phải viết gì sau khi trả lại? Tôi muốn nó năng động và không tĩnh. – Eliko

+0

Bạn sẽ cần phải tính toán chiều cao hàng và điều này phụ thuộc rất nhiều vào chính xác những gì bạn muốn làm. Bạn có thể lấy chiều cao dựa trên ô bằng cách lấy nó, lưu trữ nó khi tạo tế bào hoặc xác định nó bằng cách tính chiều cao của văn bản (bằng cách tạm thời thêm một khung nhìn hoặc thông qua 'sizeThatFits'. Xem http://stackoverflow.com/questions/ 19049532/how-do-i-size-a-uitextview-to-nội dung-on-ios-7 của nó cho nhiều phương pháp hơn –

+0

Giải pháp này đã lỗi thời và tính toán đắt hơn so với phiên bản chuẩn. –

-1

Irfan's answer không hoạt động đối với tôi.

Nó hoạt động sau khi tôi đi đến Thanh tra kích thước và chọn "Tự động" cho "Chiều cao hàng".

Các vấn đề liên quan