Iphone удалить подпункт
У меня есть UINavigationController. Справа сверху у меня есть кнопка, по щелчку которой я должен получить раскрывающееся представление таблицы. Я создал еще один класс UIViewController с xib и добавил его как subView к текущему виду. Он должен появиться на 1-м клике и исчезнуть во втором щелчке. Это должно произойти для всех щелчков (открыть представление и закрыть окно). Я написал этот код, но не знаю, где я ошибаюсь. кто-то, пожалуйста, помогите
-(void)modalTableView
{
tableView1 = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
for (UIView *subView in self.view.subviews)
{
if ([subView isKindOfClass:[TableViewController class]])
{
[subView removeFromSuperview];
}
else
{
[self.view addSubview:tableView1.view];
}
}
}
Что мне здесь не хватает?
EDIT: TableViewController - это имя моего класса UIViewController
Ответы
Ответ 1
Ключ здесь
for (UIView *subView in self.view.subviews)
каждый subView имеет класс UIView и ваш тест
isKindOfClass:[TableViewController class]
проверяет класс TableViewController
Я бы предложил, чтобы это можно было бы пометить те виды, которые вы добавляете динамически, скажем 99, а затем в вашем цикле вы можете идентифицировать эти представления по их тегу.
например.
for (UIView *subView in self.view.subviews)
{
if (subView.tag == 99)
{
[subView removeFromSuperview];
}
}
Ответ 2
Swift версия
Чтобы удалить отдельное подпредставление:
subView.removeFromSuperview()
Чтобы удалить все подпредставления:
for subView in self.subviews as [UIView] {
subView.removeFromSuperview()
}
Источник: Каков наилучший способ удалить все представления из родительского представления/суперпредставления?
Ответ 3
Попробуйте это,
if ([subView isKindOfClass:[UITableView class]])
{
[subView removeFromSuperview];
}
Ответ 4
Вот что должно было бы сработать - считая, что tableView1 является сохраненным @property (если нет, то, возможно, this SO ответ на ленивые методы загрузки для вы).
-(void)modalTableView
{
if (tableView1 != nil)
{
tableView1 = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
}
if (tableView1.view.superview == nil)
{
[self.view addSubview:tableView1.view];
} else
{
[tableView1.view removeFormSuperview];
}
}