Jin

아이폰 채팅 TableView Library 본문

Programming/Mobile

아이폰 채팅 TableView Library

진:D 2012.08.19 02:02




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


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


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



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


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


사용하면 되고, 기존 


tableView.delegate = self;


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


tableView.delegateCustom = self;


로 연결을 시켜주면 된다.


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

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





바로 이런식으로!


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





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





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




Tag
, , , , , , , , , , ,
공유하기 링크
2 Comments
댓글쓰기 폼