有几种不同的方法可以做到这一点。这仅取决于您想要实现的外观。
我认为最巧妙的方法是使用带有两个容器视图的 UIViewController,然后将登录视图控制器嵌入到一个容器视图中,并将表格视图控制器嵌入到另一个容器视图中。
在它们的视图控制器中创建对这些容器的引用后,您可以根据需要为每个容器视图设置动画,例如滑出登录视图然后将其隐藏。这样,您的“主”视图控制器将始终引用您的 tableView 控制器和登录视图控制器。
如果你不想摆脱在视图控制器之间使用模态转换的方法,我告诉你的是:
在您描述的任何地方都不存在视图控制器的“堆栈”。您必须自己创建一个,可能在应用程序委托中。
为了做到这一点,你需要在你的应用委托中创建一个你需要一个指针的视图控制器的引用,为它创建一个属性,然后合成它。它看起来像这样:
MyAppDelegate.h
@interface MyAppDelegate : UIResponder
{
MyViewControllerClass *myViewController;
}
@property (nonatomic) MyViewControllerClass *myViewController;
MyAppDelegate.m
@synthesize myViewController;
然后,在视图控制器的 viewDidLoad 方法中......
[[[UIApplication sharedApplication] delegate] setMyViewController:self];
设置完成后,您可以通过以下方式检查是否存在指向该视图控制器的指针
if([[UIApplication sharedApplication] delegate].myViewController)
{
//does exist
}
else
{
//does not exist
}
要访问该视图控制器上的方法,只需说类似
[[[UIApplication sharedApplication] delegate].myviewController performMyMethod]
希望对你有所帮助。