2016-06-13 3 views
0

я имел эту проблему (UICollectionView inside of UITableViewCell - AutoLayout)сбоя при прокрутке TableView, который имущий в CollectionView в нем

и после попытки несколько решения, которые доступны в Интернете я пришел с этим @Pablo Romeu's answer я попытался его решением, теперь я получил TableView с клетками CollectionView в нем (который может динамически изменять свой размер в зависимости от содержания в нем) но при прокрутке через мой Tableview его получение разбившихся с этой ошибкой:

2016-06-13 22:05:51.546 WishMeluck[3507:425240] the behavior of the UICollectionViewFlowLayout is not defined because: 
2016-06-13 22:05:51.546 WishMeluck[3507:425240] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values. 
2016-06-13 22:05:51.546 WishMeluck[3507:425240] Please check the values return by the delegate. 
2016-06-13 22:05:51.547 WishMeluck[3507:425240] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fb83c05de90>, and it is attached to <UICollectionView: 0x7fb83a0c7c00; frame = (0 82.5; 375 179); clipsToBounds = YES; autoresize = RM+BM; tag = 4; gestureRecognizers = <NSArray: 0x7fb83c05cf00>; layer = <CALayer: 0x7fb83c055fb0>; contentOffset: {0, 0}; contentSize: {539, 179}> collection view layout: <UICollectionViewFlowLayout: 0x7fb83c05de90>. 
2016-06-13 22:05:51.547 WishMeluck[3507:425240] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger. 
2016-06-13 22:05:51.548 WishMeluck[3507:425240] the behavior of the UICollectionViewFlowLayout is not defined because: 
2016-06-13 22:05:51.548 WishMeluck[3507:425240] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values. 
2016-06-13 22:05:51.548 WishMeluck[3507:425240] Please check the values return by the delegate. 
2016-06-13 22:05:51.548 WishMeluck[3507:425240] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fb83c05de90>, and it is attached to <UICollectionView: 0x7fb83a0c7c00; frame = (0 82.5; 375 179); clipsToBounds = YES; autoresize = RM+BM; tag = 4; gestureRecognizers = <NSArray: 0x7fb83c05cf00>; layer = <CALayer: 0x7fb83c055fb0>; contentOffset: {0, 0}; contentSize: {539, 179}> collection view layout: <UICollectionViewFlowLayout: 0x7fb83c05de90>. 
2016-06-13 22:05:51.548 WishMeluck[3507:425240] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger. 
(lldb) 

я не смог выяснить причина этой ошибки, если какой-либо орган знает ы, то пожалуйста, помогите мне

добавили это коды к моему TableViewCell

 override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 

//  collectionViewContainer.frame = self.bounds; 
//  collectionViewContainer.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 

     let flow: UICollectionViewFlowLayout = (self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout) 
     // Configure the collectionView 
     flow.minimumInteritemSpacing = 1 
      // This enables the magic of auto layout. 
      // Setting estimatedItemSize different to CGSizeZero 
      // on flow Layout enables auto layout for collectionView cells. 
      // https://developer.apple.com/videos/play/wwdc2014-226/ 
      flow.estimatedItemSize = CGSizeMake(1, 1) 
     // Disable the scroll on your collection view 
     // to avoid running into multiple scroll issues. 
     self.collectionView.scrollEnabled = true 
    } 

    func bindWithModel(model: AnyObject) { 
     // Do your stuff here to configure the tableViewCell 
     // Tell the cell to redraw its contentView 



     self.contentView.layoutIfNeeded() 
    } 

    // THIS IS THE MOST IMPORTANT METHOD 
    // 
    // This method tells the auto layout 
    // You cannot calculate the collectionView content size in any other place, 
    // because you run into race condition issues. 
    // NOTE: Works for iOS 8 or later 

    override func systemLayoutSizeFittingSize(targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize { 
     // With autolayout enabled on collection view's cells we need to force a collection view relayout with the shown size (width) 


     //self.collectionView.frame = CGRectMake(0, 0, targetSize.width, targetSize.height) 
     self.collectionView.layoutIfNeeded() 
     // If the cell's size has to be exactly the content 
     // Size of the collection View, just return the 
     // collectionViewLayout's collectionViewContentSize. 
     return self.collectionView.collectionViewLayout.collectionViewContentSize() 
    } 

и это в моем CollectionViewCell:

class CollectionViewCell: UICollectionViewCell { 

    @IBOutlet var imgView: UIImageView! 


    override func awakeFromNib() { 

     self.contentView.setNeedsLayout() 
    } 


} 

также это в моем TableViewController:

// Enable automatic row auto layout calculations 
self.tableView.rowHeight = UITableViewAutomaticDimension; 
// Set the estimatedRowHeight to a non-0 value to enable auto layout. 
self.tableView.estimatedRowHeight = 100 

мой проект file

ответ

1

ваша проблема пребывания на этой линии

return self.collectionView.collectionViewLayout.collectionViewContentSize() 

я заменил с

return CGSizeMake(self.collectionView.collectionViewLayout.collectionViewContentSize().width, 300); 

и не врезаться, но я уверен, что это не то, что вы хотите, так что, возможно вы можете увидеть проблему лучше с этим подсказкой

+0

@Rienier спасибо за ответного человека, я устал от этого, но его сбой приложения с n приглашает цикл ошибок NSLog –

+0

Я просматриваю, чтобы проверить, могу ли я исправить эту проблему, любой результат, который я поделюсь в своем ответе по праву –

+0

это будет хорошо для меня –

Смежные вопросы