使用UILabel和UIButton显示用户标记

时间:2014-08-15 01:14:46

标签: ios tags uibutton uilabel

在我的应用中,我有一个与我想要显示的用户对应的标签列表。标签应该有一个文本字段和右侧的按钮来删除标签(就像问题时这个网站上的标签很像!)

我只希望标签的一部分是可点击的,所以我不想在UIButton中放置UILabel,似乎将UIButton添加到UILabel是不好的做法。创建此对象的最佳方法是什么? 我想要类似于UITableViewCell的东西,但不是UITableViewCell,因为它不会显示在表格视图中。

2 个答案:

答案 0 :(得分:1)

只是要创建一个UIView子类,我们可以将其命名为TagView,让UILabelUIButton显示,并且不要忘记创建代理行动响应的协议。

也许是这样的。

@protocol TagViewDelegate 
@optional
- (void)didSelectedTagView:(TagView *)tagView;
- (void)didTagViewAccessoryButtonTapped:(TagView *)tagView;
@end
@interface TagView : UIView
{
    UILabel *label;
    UIButton *accessoryButton;
}
@property (weak, nonatomic) id delegate;
@property (readonly, nonatomic) UILabel *label;
@end

然后为按钮

实现标签和touchUpInside事件的UITapGestureRecognizer
- (void)initUIElement {
   // give it a gestureRecognizer for label to response the label did select
   UITapGestureRecognizer *labelTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didSelectedLabel:)];
   [label addGestureRecognizer:labelTapGR];       

   [accessoryButton addTarget:self action:@selector(accessoryTapped:) forControlEvents:UIControlEventTouchUpOutside];
}
方法didSelectedLabel:accessoryTapped:中的

,像这样回复tagView的委托。

- (void)didSelectedLabel:(UITapGestureRecognizer *)gestureRecognizer
{
    [self.delegate didSelectedTagView:self];
}

- (void)accessoryTapped:(id)sender
{
    [self.delegate didTagViewAccessoryButtonTapped:self];
}

您可以查看图书馆。

答案 1 :(得分:0)

就像cabellicar123所说,使用UIView并将UILabelUIButton放入其中。你有几种方法可以做到这一点。

首先,您可以创建一个主视图为UIView的XIB文件,然后只需拖动UIButtonUILabel并按照您想要的方式放置它们,然后在代码加载中你需要它时的笔尖。

其次是以编程方式创建此UIView,并使用addSubview方法并以此方式添加UILabelUIButton。如果您使用此方法,请确保已使用initWithFrame定义了这两个子视图,以便将它们正确放置在UIView内。我的意思是这些视图的原点应该相对于UIView的左上角。