弹出视图时是否有 iOS 覆盖?
Is there an iOS override for when a view was popped back?
我有一个 MasterDetail 应用程序和一个用于添加新项目的 NavButton。我能够成功弹出视图,但是我需要重新加载已完成的 table nice。那么我的 MasterViewController 究竟如何知道它何时弹出以便重新加载?
这是 Pop 代码:
NavigationController.PopViewController(true);
它按预期运行,然后我需要 MasterViewController 重新加载 table,我为此创建了一个方法:
public void ReloadTable()
{
TableView.ReloadData ();
}
Objective-C
可以通过检查 navigationController 是否包含 viewcontroller 来完成,如下所示:
注 viewControllerA
推viewControllerB
现在 viewControllerB
使用 viewWillDisappear
方法
- (void)viewWillDisappear:(BOOL)animated
{
if (![[self.navigationController viewControllers] containsObject: self]) //any other hierarchy compare if it contains self or not
{
// the view has been removed from the navigation stack or hierarchy, back is probably the cause
// this will be slow with a large stack however.
viewControllerA *objViewControllerA = [[self.navigationController viewControllers] lastObject];
//NSLog(@"%@",objViewControllerA);
if (objViewControllerA)
{
[objViewControllerA viewPoppedBack];
}
}
}
现在 add
method
viewControllerA
-(void)viewPoppedBack
{
//reload tableview here
[yourTableViewHere reloadData];
}
试试这个:
public partial class MasterViewController : UIViewController
{
public void ReloadTable()
{
TableView.ReloadData ();
}
}
public partial class DetailViewController : UIViewController
{
public override void ViewWillDisappear (bool animated)
{
var masterViewController = NavigationController.ViewControllers.OfType<MasterViewController> ().FirstOrDefault();
if (masterViewController != null) {
masterViewController.ReloadTable ();
}
base.ViewWillDisappear (animated);
}
}
您需要添加 using System.Linq;
以获取 OfType 方法。
我有一个 MasterDetail 应用程序和一个用于添加新项目的 NavButton。我能够成功弹出视图,但是我需要重新加载已完成的 table nice。那么我的 MasterViewController 究竟如何知道它何时弹出以便重新加载?
这是 Pop 代码:
NavigationController.PopViewController(true);
它按预期运行,然后我需要 MasterViewController 重新加载 table,我为此创建了一个方法:
public void ReloadTable()
{
TableView.ReloadData ();
}
Objective-C
可以通过检查 navigationController 是否包含 viewcontroller 来完成,如下所示:
注 viewControllerA
推viewControllerB
现在 viewControllerB
使用 viewWillDisappear
方法
- (void)viewWillDisappear:(BOOL)animated
{
if (![[self.navigationController viewControllers] containsObject: self]) //any other hierarchy compare if it contains self or not
{
// the view has been removed from the navigation stack or hierarchy, back is probably the cause
// this will be slow with a large stack however.
viewControllerA *objViewControllerA = [[self.navigationController viewControllers] lastObject];
//NSLog(@"%@",objViewControllerA);
if (objViewControllerA)
{
[objViewControllerA viewPoppedBack];
}
}
}
现在 add
method
viewControllerA
-(void)viewPoppedBack
{
//reload tableview here
[yourTableViewHere reloadData];
}
试试这个:
public partial class MasterViewController : UIViewController
{
public void ReloadTable()
{
TableView.ReloadData ();
}
}
public partial class DetailViewController : UIViewController
{
public override void ViewWillDisappear (bool animated)
{
var masterViewController = NavigationController.ViewControllers.OfType<MasterViewController> ().FirstOrDefault();
if (masterViewController != null) {
masterViewController.ReloadTable ();
}
base.ViewWillDisappear (animated);
}
}
您需要添加 using System.Linq;
以获取 OfType 方法。