찾다

 >  Q&A  >  본문

ios - CollectionView.xib中创建多个nibCell,用的时候如何使用??


如图:我在collection.xib中创建了2个cell,定义了不同的identifier,

使用的时候:

     NSArray *nibArrays = [[UINib nibWithNibName:@"LongCell" bundle:nil] instantiateWithOwner:nil options:nil];
    [collectionView registerClass:[[nibArrays objectAtIndex:0] class] forCellWithReuseIdentifier:@"LongCellFirst"];
    [collectionView registerClass:[[nibArrays objectAtIndex:1] class] forCellWithReuseIdentifier:@"LongCellSecond"];
#pragma mark - UICollectionViewDelegate DataSource -
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.item % 2 == 0) {
        LongCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LongCellFirst" forIndexPath:indexPath];

        return cell;
    }else {
        LongCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LongCellSecond" forIndexPath:indexPath];
        return cell;
    }
}

这样能运行,但是取出的cell都是上面什么也没有。
是我注册cell不对吗??还是因为不能这样用?tableViewCell.xib就可以这样搞啊?
tableView.xib中创建多个cell
请大神解释啊。。。。。。

天蓬老师天蓬老师2772일 전854

모든 응답(6)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 09:31:28

    nib을 이용해서 생성했는데, RegisterNib을 이용하여 등록하면 안되는 걸까요? regClass를 사용하는 이유

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:31:28

    xib 파일을 잘못 읽었습니다
    NSArray *nibArrays=[[NSBundle mainBundle]loadNibNamed:@"LongCell" owner:nil options:nil];

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:31:28

    두 가지 방법:

    1. 은 두 개의 xib, 한 번에 하나씩 registerNib:

    2. 분할됩니다.
    3. 하나를 합성하되 인스턴스를 직접 초기화하세요.

      으아악

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:31:28

    하나의 xib 파일이 하나의 View에 해당하는 것이 좋습니다. 파일을 저장할 필요가 없습니다

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:31:28

    위에서 말씀드린 방법으로 셀을 표시할 수는 있으나 셀 내 컨트롤 설정이 적용되지 않는 현상이 발생합니다. 작성자가 문제를 해결했나요?

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 09:31:28

    셀에 컨트롤을 연결할 때 아무것도 변경하지 않으면. 연결된 모든 컨트롤은 기본적으로 cell1의 컨트롤로 설정됩니다. 평신도의 관점에서 연결 시 기본적으로 첫 번째 셀의 컨트롤이 사용됩니다

    회신하다
    0
  • 취소회신하다