2015-06-24 3 views
3

У меня есть UITextField, для которого я хочу создать собственный класс. Поэтому я создал файл с подклассом UITextField. Затем, в пользовательском классе, я хочу реализовать tableView. Вид как авто-комплект textField.Добавить subview в пользовательский класс

Я начал создавать его, и добавил tableView так:

[self addSubview:self.tableView]; 

Когда я запустить приложение, то tableView находится в textField, так что я могу видеть только часть tableView. Как я могу добавить его как subview, чтобы я мог видеть полный tableView?

+0

Наверное, вы хотите настроить UITableView на самом деле, потому что я не вижу, что вы используете настраиваемый UITextField. И попытайтесь четко объяснить свое требование. – Mrunal

+0

Я уверен, что UITextField - это не тот класс, который очень хорошо обрабатывает подклассы. Я предлагаю вам использовать композицию для подкласса. Создайте свой собственный подкласс UIView с UITexField и UITableView в качестве подзонов. – Andrea

+0

смотрите http://stackoverflow.com/questions/16686379/textview-with-suggestions-list-in-ios –

ответ

1

Это то, что вы ищете https://github.com/gaurvw/MPGTextField

Этот подкласс UITextField, что вы хотите - это builed для функции «Поиск». Если вы все еще хотите использовать свой собственный, добавить TableView не UITextField себя, но как

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

EDIT:

вы можете установить кадр как:

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

Путь для добавления subview в uitextfield необходимо перегрузить метод layoutSubviews и начать просмотр таблицы:

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

Я пробовал это без tableViewController, просто tableView. Когда я запускаю приложение, я не вижу tableViews – Jessica

+0

, как вы устанавливаете фрейм вашего стола? – Doro

+0

CGRectMake (0, 0, 100, 300) – Jessica

0

Это добавит 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 «s SuperView, то есть, то textField и tableView должны быть братьями и сестрами.

+0

Спасибо за ответ! Когда я сам делаю.clipsToBounds = NO; 'тогда он показывает tableView так, как должен, но ячейки под текстовым полем не доступны для кликов. – Jessica

+0

@Jessica Тогда почему бы не попробовать лучший способ? создайте «textField» и «tableView». – liushuaikobe

+0

Что вы имеете в виду, братья и сестры! Извините ... Я новичок – Jessica

Смежные вопросы