Как добавить UITextView как объект в NSMutableArray - PullRequest
0 голосов
/ 06 декабря 2011

я пытаюсь добавить uitextview как подпредставление ячейки uitabaleview, и для этого я создаю uitextview программно в cellForRowAtIndex, и я хочу, чтобы он отображал текст динамически от 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 Ответ

1 голос
/ 06 декабря 2011

Вы можете различить, создав подкласс 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
    }
}

в этом случае вам вообще не понадобится дополнительный массив (объект subviews является массивом).

...