2015-12-09 14 views
9

Tôi có khác nhau examples nơi chúng tôi có thể cập nhật chiều cao UITableViewCell dựa trên việc phát triển UITextView thực sự đang hoạt động đối với tôi. Vấn đề mà tôi đang phải đối mặt là, tôi có nhiều bản xem dưới bên dưới UITextView bên trong một UITableViewCell. Bằng cách này, cập nhật chiều cao của ô nhưng vị trí của các bản xem trước vẫn cố định, nguyên nhân gây ra sự chồng chéo của UITextView và các bản xem trước. Chỉ cần đề cập đến, tôi không sử dụng bố cục tự động.
Làm cách nào để khắc phục sự cố này?
Đây là ba ảnh chụp màn hình đó sẽ giúp trong việc tìm hiểu vấn đề của tôi:Cách cập nhật chiều cao UITableViewCell vì văn bản được nhập vào UITextView

1. Trước khi TextView được hiển thị:

enter image description here

2. Sau TextView được hiển thị:

enter image description here

3. Sau khi văn bản được nhập:

enter image description here

+0

Trong ô xem bảng của bạn đặt tất cả các chế độ xem con của bạn (vẫn cố định) trong một chế độ xem và khi thay đổi chiều cao UITextview (tăng/giảm) đặt chế độ xem đó ở vị trí dưới UITextview. –

+0

Bạn đang sử dụng ngôn ngữ nào? –

Trả lời

2

Bạn đang sử dụng bố trí ô tô? Tôi đã làm điều này trước nhiều lần với UITableViewCells mặc dù chủ yếu là với UILabel chứ không phải UITextView.

Sự cố của bạn có thể được giải quyết với bố cục tự động. Bạn bố trí tất cả các subviews của bạn (bên trong của UITableViewCell) tương đối với nhau. Nếu một lượt xem (nghĩa là UITextView) thay đổi kích thước thì các chế độ xem khác sau đó sẽ điều chỉnh tương ứng với chế độ xem đó. Dưới đây là một vài liên kết hữu ích.

Điều này không dành riêng cho UITableViewCell nhưng có rất nhiều ví dụ hay về các trường hợp khác nhau. Đại học Stanford iOS Phát triển 7 Apps: Bài giảng 9 - Animation và Autolayout https://www.youtube.com/watch?v=r1sc7NI6-wo

+0

Tôi không sử dụng bố cục tự động. Và nếu tôi thay đổi nó bây giờ, nó sẽ là một thay đổi lớn. – Nitish

+0

Tôi hiểu một số chế độ xem có thể quá khó khăn để chuyển sang chế độ tự động hoàn thành. Hãy nhớ rằng bạn có thể sử dụng lò xo và thanh chống cùng với autolayout. Nó không phải khéo léo là cái này hay cái kia. Bạn cũng có thể thử thực hiện một UIView tùy chỉnh (.xib) mà autolayout nhưng là một đứa trẻ để xem bằng cách sử dụng lò xo và thanh chống để cô lập cách bạn làm bố trí. – xdeleon

+0

Tôi đang tạo các bản xem trước UITableViewCell từ mã trong cellForRowAtIndex và không thông qua xib. – Nitish

3

tôi giả sử bạn đang sử dụng bố trí tự động cho tế bào này (nhưng chúng ta có thể sử dụng một ví dụ mã hoặc Xcode ảnh chụp màn hình để giúp bạn cụ thể hơn). Nếu bạn đang sử dụng bố trí tự động, bạn sẽ muốn chắc chắn rằng:

  1. Bạn có một ràng buộc giữa các UITextView và subviews UIView khác dưới nó trong tế bào
  2. Các subviews UIView khác đang dần dần bị hạn chế để dưới cùng của ô.
+0

Tôi không sử dụng bố cục tự động. Và nếu tôi thay đổi nó bây giờ, nó sẽ là một thay đổi lớn. – Nitish

+0

Đã thêm ảnh chụp màn hình. – Nitish

+0

Bạn cần sử dụng bố cục tự động sẽ điều chỉnh khoảng cách. –

3

UITableViewCell s được tái sử dụng, bạn sẽ thấy rằng khi thêm các đối tượng vào contentView, các đối tượng cũng sẽ được tái sử dụng mà không bị loại bỏ, dẫn đến subviews chồng chéo. Cách này để bắt đầu số cellForRowAtIndexPath của bạn với mã sau:

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    for (UIView * view in [cell.contentView subviews]) { 
//  clears the cell before reusing 
     [view removeFromSuperview]; 
    } 

Hy vọng điều này sẽ hữu ích.

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