我有一个主要视图,如图所示。我在其中添加了2个子视图,每个子视图都有自己的视图控制器。
在ipadMainViewController
,
self.dTVC= [[dialoguesTableViewController alloc] initWithNibName:@"dialoguesTableViewController" bundle:nil];
[self.dTVC.view setFrame:rectFordTVC];
[self.view addSubview:self.dTVC.view];
之后,如果按dialoguesTableViewController
中的按钮,我想删除CategoriesViewController
的视图。但是,我不能删除它。
在CategoriesViewController
中,我这样写,但无法从dialoguesTableViewController
移除ipadMainViewController
。我该怎么做?
在CategoriesViewController
中,我编写了这样的代码,但它无效。
self.dTVC= [[dialoguesTableViewController alloc] initWithNibName:@"dialoguesTableViewController" bundle:nil];
[self.dTVC.view removeFromSuperview];
答案 0 :(得分:2)
因此,如何做到这一点的方法很少:
第一种方式:
将观察者添加到ipadMainViewController初始化方法或viewDidLoad方法,它取决于您的需要。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(buttonPressed)
name:@"kNotificationDidPressedButon"
object:nil];
将-buttonPressed
方法添加到ipadMainViewController控制器,以删除您的视图或其他目的。
- (void)buttonPressed
{
// remove view here
}
在您点击相应按钮的方法的CategoriesViewController中添加以下代码:
[NSNotificationCenter defaultCenter] postNotificationName:@"kNotificationDidPressedButon"
object:self];
第二种方式:
将Delegate属性添加到CategoriesViewController。您可以在此处找到有关如何设置委托的信息:link
第三种方式:
使用objective-c块
初学者的初步建议:
我建议你从第一路开始,因为这是最简单的理解。您还必须在-dealloc
或-viewWillDisapper
方法中删除ipadMainViewControllerr中的观察者,这取决于您添加观察者的位置,例如在-init
方法或-viewDidLoad
或-viewWillAppear
回调中;
[[NSNotificationCenter defaultCenter] removeObserver:self];
答案 1 :(得分:0)
试试这个......
添加以下代码,您可以在其中删除视图
-(void)viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeFromSuperview) name:@"REMOVE" object:nil];
}
-(void)removeFromSuperviev{
[view removeFromSuperview];
}
添加以下代码表格,您需要删除
[[NSNotificationCenter defaultCenter] postNotificationName:@"REMOVE" object:nil];