如何在NSMutableArray中添加UITextView作为对象

时间:2011-12-06 08:53:11

标签: iphone ios4 uitableview uitextview

我正在尝试添加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);


    }

1 个答案:

答案 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
    }
}

在这种情况下,您根本不需要额外的数组(子视图对象是一个数组)。