从tableview发送文本到textfield

时间:2011-09-20 12:19:00

标签: iphone text uitableview uitextfield

我需要这样做:当用户从tableview中选择一行以将该行中的文本发送到其他tableview的文本字段时。 例如,如果我从中选择服务 http://i55.tinypic.com/t043zk.png

我希望在Part de Partieaire附近看到服务:http://i56.tinypic.com/10zn43p.jpg

我试过了:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = selectedCell.textLabel.text;

    NSLog(@"%@",cellText);
 self.recherchePartenaireTableView.partenaire.text=cellText;
}

按下按钮确定时:

-(IBAction)OkButtonPressed:(id)sender{
    NSLog(@"BTN Ok");
    [self.recherchePartenaireTableView.tableviewrecherchepartenaire reloadData];
    [self.navigationController popViewControllerAnimated:YES];
}

但这不起作用。谁能帮我?提前谢谢..

第一张图片的实施文件中的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

        cell.backgroundColor = [UIColor clearColor];
        cell.selectionStyle = UITableViewCellSelectionStyleGray;
        cell.backgroundView.opaque = NO;
        //cell.alpha = 0.65;

        cell.textLabel.backgroundColor = [UIColor clearColor];
        cell.textLabel.opaque = NO;
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.highlightedTextColor = [UIColor whiteColor];
        cell.textLabel.font = [UIFont boldSystemFontOfSize:18];

        cell.detailTextLabel.backgroundColor = [UIColor clearColor];
        cell.detailTextLabel.opaque = NO;
        cell.detailTextLabel.textColor = [UIColor whiteColor];
        cell.detailTextLabel.highlightedTextColor = [UIColor whiteColor];
        cell.detailTextLabel.font = [UIFont systemFontOfSize:14];
    }

    // Set up the cell...
    [[cell textLabel] setText: [typePartenaireArray objectAtIndex:indexPath.row]] ;

    return cell;
}

**在第二张图片的实现文件中**

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {

            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
            cell.backgroundColor = [UIColor clearColor];
            cell.selectionStyle = UITableViewCellSelectionStyleGray;
            cell.backgroundView.opaque = NO;
            //cell.alpha = 0.65;

            cell.textLabel.backgroundColor = [UIColor clearColor];
            cell.textLabel.opaque = NO;
            cell.textLabel.textColor = [UIColor whiteColor];
            cell.textLabel.highlightedTextColor = [UIColor whiteColor];
            cell.textLabel.font = [UIFont boldSystemFontOfSize:18];

            cell.detailTextLabel.backgroundColor = [UIColor clearColor];
            cell.detailTextLabel.opaque = NO;
            cell.detailTextLabel.textColor = [UIColor whiteColor];
            cell.detailTextLabel.highlightedTextColor = [UIColor whiteColor];
            cell.detailTextLabel.font = [UIFont systemFontOfSize:14];

            if(indexPath.row==0)
            {
                partenaire=[[UITextField alloc] init];
                partenaire.frame = CGRectMake(200,10,80,50);
                partenaire.textColor=[UIColor grayColor];
                partenaire.text=@"Tous";     
                [partenaire setKeyboardAppearance:NO];
                [cell.contentView addSubview:partenaire];

            }

        }

        // Set up the cell...
        [[cell textLabel] setText: [arraytableview objectAtIndex:indexPath.row]] ;

        return cell;


}

2 个答案:

答案 0 :(得分:1)

覆盖第二个UITableView的init方法以接受额外的参数(在您的情况下是在当前UITableView中选择的单元格的文本)。在配置单元格的第二个UITableView中,使用您刚刚从上一个tableView接收到的第二个tableview对象初始化的参数设置它们的文本。

答案 1 :(得分:0)

您必须将文本插入位置1的数组arraytableview(数组从0开始)。确保它被声明为NSMutableArray,否则你无法改变它。

所以你必须在OK方法中执行:[arraytableview insertObject: cellText atIndex: 1]。为此,您可能必须引入一个包含当前所选文本的变量,以将其从选定方法“转移”到OK方法。

或者您只需将其添加到- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath中,但它会立即添加文本而不按OK。真的取决于你想要什么

我希望现在很清楚。

使用多行,文本字段等定义UITableViewCell的代码:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        imageView = [[UIImageView alloc] initWithFrame: CGRectZero];
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        [self.contentView addSubview: imageView];

        titleLabel = [[UILabel alloc] initWithFrame: CGRectZero];
        [titleLabel setFont:[UIFont systemFontOfSize:14.0]];
        [titleLabel setTextColor:[UIColor blackColor]];
        [titleLabel setHighlightedTextColor:[UIColor darkGrayColor]];
        [titleLabel setLineBreakMode: UILineBreakModeWordWrap];
        titleLabel.numberOfLines = 2;

        [self.contentView addSubview: titleLabel];

        description = [[UITextField alloc] initWithFrame: CGRectZero];
        [description setFont:[UIFont systemFontOfSize:12.0]];
        [description setTextColor:[UIColor darkGrayColor]];
        [description setHighlightedTextColor:[UIColor darkGrayColor]];
        [self.contentView addSubview: description];


    }
    return self;
}

    -(void) layoutSubviews {
        [super layoutSubviews];
        //  D_IN;   
        [imageView setFrame:CGRectMake(8.0, 10.0, 20.0, 20.0)];
        [titleLabel setFrame:CGRectMake(40.0, 1.0, 250.0, 40.0)]; //two lines
        [description setFrame:CGRectMake(40.0, 37.0, 250.0, 3.0)];//not used

        //  D_OUT;  
}

在为每个新组件指定起始x和y时确保布局正确,否则您将看不到任何内容!!!

然后只需用

设置它
 titleLabel.text = 

description.text =