[Cocoa]_[初级]_[根据所要显示的内容,动态创建NSTextField(Label),并在一个NSView内显示]

这篇博客介绍了如何在Objective-C的Cocoa环境中,根据数据内容动态创建NSTextField(Label)并显示在NSView内。通过删除已有子视图,然后根据数据项创建新的静态文本字段,并设置相应的文字内容,最后更新NSView的显示状态来实现内容的动态更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其中IBOutlet NSView *showContentsView;要进行绑定连接。

-(void)doShowContactsContents:(id) data
{
    MqjTableData *td = data;
   
    NSMutableArray *deleteArray =[[NSMutableArray alloc] initWithArray:[showContentsView subviews]];
    [deleteArray makeObjectsPerformSelector:@selector(removeFromSuperview)];
    [deleteArray release];

    NSUInteger i = 1;
    if (![[td name] isEqualToString:@""])
    {
        NSTextField *staticField =[self appendTextField:i];
        [staticField setStringValue:[NSString stringWithFormat:@"Name: %@",td.name]];
        ++i;
    }
    if (![[td number] isEqualToString:@""])
    {
        NSTextField *staticField =[self appendTextField:i];
        [staticField setStringValue:[NSString stringWithFormat:@"Number: %@",td.number]];
        ++i;
    }

    if (![[td qqNumber] isEqualToString:@""])
    {
        NSTextField *staticField =[self appendTextField:i];
        [staticField setStringValue:[NSString stringWithFormat:@"QQ: %@",td.qqNumber]];
        ++i;
    }

    if (![[td emailNumber] isEqualToString:@""])
    {
        NSTextField *staticField =[self appendTextField:i];
        [staticField setStringValue:[NSString stringWithFormat:@"E-mail:%@",td.emailNumber]];
        ++i;
    }
    
    [showContentsView setNeedsDisplay:YES];
    
    
}
-(NSTextField*) appendTextField:(NSUInteger) item
{
    NSTextField *field =[NSTextField new];
    [field setFrame:NSMakeRect(10, showContentsView.frame.size.height-25*item, 200, 20)];//坐标从上到下
    
    [field setTextColor:[NSColor controlTextColor]];
    [field setBackgroundColor:[NSColor controlColor]];
    [field setBordered:NO];
    [field setEditable:NO];//控制是标签还是编辑框
    [showContentsView addSubview:field];
    return field;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值