UINavigationControllerがあります。右上には、ドロップダウンテーブルビューを取得する必要があるボタンがあります。 xibを使用して別のUIViewControllerクラスを作成し、現在のビューにsubViewとして追加しました。 1回目のクリックで表示され、2回目のクリックで消えます。これはすべてのクリックで発生するはずです(開いているビューと閉じているビュー)。私はこのコードを書きましたが、どこが間違っているのかわかりません。誰か助けてください
-(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];
}
}
}
ここで何が欠けていますか?
編集:TableViewControllerはUIViewControllerクラスの名前
手がかりはこちら
for (UIView *subView in self.view.subviews)
各サブビューはクラスUIViewおよびテストです
isKindOfClass:[TableViewController class]
クラスTableViewControllerをテストしています
これを行う方法として、動的に追加するビューに99などのタグを付けることをお勧めします。ループ内では、タグでそれらのビューを識別できます。
例えば。
for (UIView *subView in self.view.subviews)
{
if (subView.tag == 99)
{
[subView removeFromSuperview];
}
}
単一のサブビューを削除するには:
subView.removeFromSuperview()
すべてのサブビューを削除するには:
for subView in self.subviews as [UIView] {
subView.removeFromSuperview()
}
これを試して、
if ([subView isKindOfClass:[UITableView class]])
{
[subView removeFromSuperview];
}
ここにいくつかの方法があります-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];
}
}