Подтвердить что ты не робот

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

4b9b3361

Ответ 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];
    }
}

Ответ 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];
    }
}