我正在尝试添加uitextview作为uitabaleview的单元格的子视图,因为我在cellForRowAtIndex中以编程方式创建uitextview,我希望它从nsmutablearray动态显示文本到uitextview但是问题是...如何区分不同的uitextview特定的uitableview的单元格。我的代码是这样的.......
- (UITableViewCell *)tableView:(UITableView *)tv
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier=@"cell";
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
@try{
// Set up the cell...
if (tv == self.smsTableView) {
int count1=[smsTxt count];
int rowCount=indexPath.row;
int index1=(count1-(rowCount+1));
NSLog(@"count:::%d",count1);
NSLog(@"row count:::%d",rowCount);
NSString *cellValueSMSTxt = [self.smsTxt objectAtIndex:index1];
UITextView *msgView=[[UITextView alloc]init];
msgView.frame=CGRectMake(12, 15, 280, 45);
msgView.font=[UIFont systemFontOfSize:12.0];
msgView.editable=FALSE;
msgView.textColor=[UIColor grayColor];
msgView.backgroundColor=[UIColor clearColor];
msgView.text=cellValueSMSTxt;
arrMsgView=[[NSMutableArray alloc]init];
[arrMsgView addObject:msgView];
[msgView release];
UITextView *tempTextView=[arrMsgView objectAtIndex:rowCount];
NSLog(@"countforarr:::%d",[arrMsgView count]);
[cell.contentView addSubview:tempTextView];
[arrMsgView release];
}
}@catch (NSException *e) {
NSLog(@"%@",e);
}
答案 0 :(得分:1)
您可以通过继承UITableViewCell并保持指向不同的UITextView,或者通过在UITextView上设置标记(标记是UIView属性)来区分:
@property(nonatomic) NSInteger tag
现在你正在创建一个数组来保存UITextViews并销毁它,这不会让你走得太远。
arrMsgView=[[NSMutableArray alloc]init];
[arrMsgView addObject:msgView];
[msgView release];
UITextView *tempTextView=[arrMsgView objectAtIndex:rowCount];
NSLog(@"countforarr:::%d",[arrMsgView count]);
[cell.contentView addSubview:tempTextView];
[arrMsgView release];
访问给定的UITextView可以做的是遍历contentView子视图,寻找给定的对象:
for (UIView* v in [contentView subviews]) {
if ([v isKindOfClass:[UITextView class]] && v.tag == someIdTag) {
// do something
}
}
在这种情况下,您根本不需要额外的数组(子视图对象是一个数组)。