🔥 한정 프로모션 · 인기 제품 모음

최대 70% 할인
추천템만 빠르게 확인하세요

진테크랩에서 전문 리뷰 기반 인기 제품
놓치기 아까운 할인·프로모션 상품을 정리했습니다.

최대 70% 할인
🎁 프로모션 상품
📝 전문 리뷰 확인
🏆 인기 제품 추천
할인 제품 보러가기 →
놓치면 아쉬운 추천 제품을 한눈에 확인해보세요.

blog_thumbnail_cttableview

아이폰 채팅쪽을 구현하다가 마땅한 라이브러리가 없어서 직접 만들게 되었다.

하루만에 만들어서 그런지 아직은 추가할 부분이 많기는 하지만 이것저것 살좀 붙이다 보면

인터넷에서 돌아다니는 채팅화면보다는 쓸만할 것 같다 ‘ㅡ’

일단은 어느곳에서도 채팅창을 쉽게 띄울 수 있게 라이브러리(?) 형식으로 만들게 되었는데

채팅화면을 띄우려는 곳에 내가 만든 CTTableView를 UITableView에다가 상속을 받아서

사용하면 되고, 기존 

tableView.delegate = self;

로 지정하여 사용하였던 것을 

tableView.delegateCustom = self;

로 연결을 시켜주면 된다.

테이블뷰에 데이터넣는 방법은 CTTableView의 required 메소드인

-(NSArray)getData;

를 추가해서 채팅 데이터 NSArray파일만 리턴시켜주면 자동으로 채팅 데이터가 쭈루룩 뜬다.

스크린샷 2012-08-19 오전 1.16.52

바로 이런식으로!

옆에 몇분전 몇분전 뜨는거는 지금 날짜&시간 테스트중이라서…….

getData를 통해서 NSArray를 던져줄때 배열안에 객체들을 Dictionary로 처리하지 않고

CTTableModel로 처리했다.

CTTableModel은 다음과 같다.

@interface CTDataModel : NSObject
@property(nonatomic, copy) NSString *cUserName;         // 사용자이름
@property(nonatomic, copy) NSString *cContent;          // 대화내용
@property(nonatomic, strong) UIImage *cUserImage;       // 사용자이미지
@property(nonatomic, assign) BOOL isUserName;           // 사용자가 본인인지 확인, YES:본인, NO:상대방

@end

위 형식에 맞추어 데이터를 담고 NSArray에 하나하나 추가한뒤 getData를 통해

리턴을 시켜주면 된다.

//  CTTableView.h

@protocol CTTableViewDelegate

@required
-(NSArray *)getData;

@end

@interface CTTableView : UITableView < UITableViewDatasource, UITableViewDelegate >

@property(nonatomic, strong) NSArray *data;
@property(nonatomic, strong) id < CTTableViewDelegate > delegateCustom;

-(void)initTableView;
-(CGSize)dataSize:(NSString *)string;

@end

위 소스는 CTTableView의 헤더파일

실제로 적용할때는 아래와 같이 사용하면 된다.

//
// 예제
//
// 스토리보드에서 사용하려는 UITableView에
// CTTableView를 상속받고
// IBOulet과 CTTableViewDelegate를 연결시켰다고 가정하에 작성한다.

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.

    cTableView.delegateCustom = self;

    [cTableView initTableView];

}

- (NSArray *)getData
{
    NSMutableArray *dataArray = [[NSMutableArray alloc] init];

    CTDataModel *chatData = [[CTDataModel alloc]init];

    chatData.cUserName = @"puding1507";
    chatData.cContent = @"동해물과 백두산이 마르고 닳도록 하나님이 보우하사 우리나라 만세";
    chatData.isUserName = YES;
    chatData.cUserImage = [UIImage imageNamed:@"userImg.png"];
    [dataArray addObject:chatData];

    return dataArray;
}


아직은 연습삼아 만든 것이고, 언제 글을 올렸는지 Date처리, 데이터를 불러올때 전체 데이터가 

아닌 최근 데이터를 먼저 불러오고 상단으로 갈때마다 데이터 추가로드.

추가해야할 내용들이 산떠미이다 ㅜ_ㅜ 흐엉

일단 지금까지 작업해 놓은 소스코드파일 (샘플로 작업 끝)

ChatTableViewSample.zip
다운로드


힘들군…………..=ㄴ=;;;

By Jin

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다