How to pass an array to my custom cell class
I have a TableVi开发者_如何学JAVAew with my custom cell class where I have a pickerview.
I want to pass an array to populate pickerview with data. How to pass it. Is my approach correct?
You don't pass anything to a TableViewCell. Instead you have to implement
- UITableViewDelegate
- UITableViewDatasource
to populate the tableView. And
- UIPickerViewDelegate
- UIPickerViewDatasource
for the pickers.
I have included pickerview delegate and datasource within table cell and it works fine... Passing the array is same as to any view.
//////////////ScrollCell.h
@interface ScrollCell : UITableViewCell <UIPickerViewDataSource, UIPickerViewDelegate>{
UILabel *textlabel;
UIPickerView *pickerview;
NSString *textfieldValue;
NSString *scrollerValue;
NSArray *scrollerData;
}
@property (nonatomic,retain)UILabel *textlabel;
@property (nonatomic,retain)UIPickerView *pickerview;
@property (nonatomic,retain)NSArray *scrollerData;
@property (nonatomic,retain)NSString *textfieldValue;
@property (nonatomic,retain)NSString *scrollerValue;
-(NSString *)getTextfiledValue;
-(NSString *)getScrollerValue;
-(void)setScrollerData:(NSArray *)array;
@end
/////////ScrollerCell.m
//
// ScrollCell.m
// MultipleDetailViews
//
// Created by Ruslan Karimov on 12/5/10.
// Copyright 2010 Eventagrate. All rights reserved.
//
#import "ScrollCell.h"
#import "Answers.h"
@implementation ScrollCell
@synthesize textlabel, pickerview, scrollerData, textfieldValue, scrollerValue;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
textlabel = [[UILabel alloc]init];
textlabel.textAlignment = UITextAlignmentLeft;
textlabel.font = [UIFont systemFontOfSize:25];
textlabel.textColor =[UIColor blackColor];
[self.contentView addSubview:textlabel];
pickerview = [[UIPickerView alloc]init];
[self.contentView addSubview:pickerview];
scrollerData = [[NSArray alloc] init];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
CGRect contentRect = self.contentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame= CGRectMake(boundsX+10 ,+10, 300, 25);
textlabel.frame = frame;
//frame= CGRectMake(boundsX+200 ,0, 300, 100);
self.pickerview.frame = CGRectMake(boundsX+200 ,0, 300, 163);
self.pickerview.delegate = self;
//self.pickerview.
}
-(void)setScrollerData:(NSArray *)array
{
//[self.scrollerData arrayByAddingObjectsFromArray:array];
scrollerData = array;
NSLog(@"from scrolltable cell: %i",[self.scrollerData count]);
}
-(NSString *)getTextfiledValue
{
return self.textfieldValue;
}
-(NSString *)getScrollerValue
{
return self.scrollerValue;
}
//PICKER VIEW CONTROL
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [scrollerData count];
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
Answers *template = (Answers *)[self.scrollerData objectAtIndex:row];
return template.answer_title;
//return @"fff";
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
}
- (void)dealloc {
[super dealloc];
}
@end
精彩评论