Add subview to a custom class

204 views Asked by At

I have a UITextField that I want to create a custom class on. So I created a file with a subclass of UITextField. Next, in the custom class, I want to implement a tableView. Kind of like a auto-complete textField.

I started creating it, and added the tableView like this:

[self addSubview:self.tableView];

When I run the app, the tableView is in the textField, so I can only see part of the tableView. How can I add it as a subview so I can see the full tableView?

2

There are 2 answers

9
Doro On BEST ANSWER

This is what you are looking for https://github.com/gaurvw/MPGTextField

This uitextfield subclass does what you want - it's builed for 'search' feature. If you still want to use your own, add tableview not to uitextfield itself, but like

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

EDIT:

you can set frame as:

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

The way to add subview to uitextfield is to overload layoutSubviews method and init your tableview there:

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

This will add the tableView as the subView of the textField.

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

However, a better way is to make the tableView as the textField's superView's subView, that is, the textField and the tableView should be siblings.