pickerview가있는 사용자 정의 셀 클래스가있는 TableView가 있습니다.배열을 내 사용자 정의 셀 클래스에 전달하는 방법
데이터를 pickerview에 채우기 위해 배열을 전달하고 싶습니다. 그것을 전달하는 방법. 내 접근 방식이 맞습니까?
pickerview가있는 사용자 정의 셀 클래스가있는 TableView가 있습니다.배열을 내 사용자 정의 셀 클래스에 전달하는 방법
데이터를 pickerview에 채우기 위해 배열을 전달하고 싶습니다. 그것을 전달하는 방법. 내 접근 방식이 맞습니까?
TableViewCell에 아무 것도 전달하지 않습니다. 대신 당신은있는 tableView를 채우는
를 구현해야합니다. 그리고 선택기에 대한
.
테이블 셀 내에 pickerview 대리자 및 데이터 소스가 포함되어 있으며 정상적으로 작동합니다. 배열을 전달하는 것은 모든보기와 동일합니다.
//////////////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
질문을 답으로 게시하는 대신 원래의 질문을 편집하십시오. – vikingosegundo
보기에 컨트롤러에 속한 논리가 채워지므로이 코드는 MVC를 위반합니다. 또한 어떤 회원도 석방하지 않으므로 새어 나옵니다. – vikingosegundo
고맙습니다 vikingosgundo에 대한 조언. 정말 감사 –
BTW : 그것은 내가 각 셀 pickerviews이 있거나 할 수있는 방법이 있다는 것을 고려, 나는 테이블보기 셀 클래스 선택기 위임 및 데이터 소스를 배치해야 – vikingosegundo
스크롤에 오면 세포의 내부 선택기 아주 제대로 작동하지 않을 수 있습니다 테이블 뷰 클래스에서. tableview 클래스에서 pickerview 대리인이 있으면 별도의 데이터로 pickerview를 채울 수 있습니까? –
아니, 그들은 확실히 세포에 속하지 않습니다. [TableView 프로그래밍 가이드] (http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/AboutTableViewsiPhone/AboutTableViewsiPhone.html%23//apple_ref/doc/uid/TP40007451) – vikingosegundo