【问题标题】:Add subview to a custom class将子视图添加到自定义类
【发布时间】:2015-06-24 06:36:00
【问题描述】:

我有一个要在其上创建自定义类的 UITextField。所以我创建了一个子类为UITextField 的文件。接下来,在自定义类中,我要实现一个tableView。有点像自动完成textField。

我开始创建它,并像这样添加tableView:

[self addSubview:self.tableView];

当我运行应用程序时,tableView 在textField 中,所以我只能看到tableView 的一部分。如何将其添加为subview,以便查看完整的tableView?

【问题讨论】:

  • 我猜你实际上想要自定义 UITableView,因为我看不到你正在使用自定义的 UITextField。并尝试清楚地解释您的要求。
  • 我很确定 UITextField 不是那种可以很好地处理子类的类。我建议您使用组合而不是子类化。使用 UIExField 和 UITableView 作为子视图创建您自己的 UIView 子类。

标签: ios objective-c uitableview addsubview


【解决方案1】:

这就是你要找的 https://github.com/gaurvw/MPGTextField

这个 uitextfield 子类可以满足您的需求 - 它是为“搜索”功能而构建的。 如果你还想用自己的, 将tableview添加到uitextfield本身,而不是像

[[self superview] addSubview:tableViewController.tableView];

编辑:

您可以将框架设置为:

 CGRect frameForPresentation = [self frame];
 frameForPresentation.origin.y += self.frame.size.height;
 frameForPresentation.size.height = 200;
 [tableViewController.tableView setFrame:frameForPresentation];

将子视图添加到uitextfield的方法是重载layoutSubviews方法并在那里初始化你的tableview:

- (void)layoutSubviews 
{ 
[super layoutSubviews]; 
if (!self.tableview.superview) 
{ 
[self setupView]; 
} 
}

【讨论】:

  • 我试过没有tableViewController,只是一个tableView。当我运行应用程序时,我没有看到任何 tableViews
  • 如何设置tableview的框架?
  • CGRectMake(0, 0, 100, 300)
  • 尝试使用 uitextfield 框架作为 tableview 的基本框架,正如我在编辑中提到的那样
  • 我不认为问题出在框架中,因为我在执行 self addSubiew 时确实看到了其中的一部分。
【解决方案2】:

这会将tableView 添加为textField 的子视图。

self.tableView.frame = CGRectMake(0, CGRectGetHeight(self.bounds), CGRectGetWidth(self.bounds), YOUR_TABLE_HEIGHT);
[self addSubview:self.tableView];
self.clipsToBounds = NO;

不过,更好的办法是让tableView成为textField的superView的subView,即textField和tableView应该是兄弟。

【讨论】:

  • 感谢您的回答!!当我执行self.clipsToBounds = NO; 时,它会按原样显示 tableView,但 textField 下的单元格不可点击。
  • @Jessica 那为什么不尝试更好的方法呢?制作textField 和tableView 兄弟姐妹。
  • 兄弟姐妹是什么意思!!抱歉...我是新手
  • @Jessica 将tableView 添加到textFiled 的superView 的subView 而不是textFiled 的subView。
  • 当我做 [self.superview addSubview:self.tableView],我看不到 tableView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
相关资源
最近更新 更多