我是 obj-C 编程的新手。我对如何制作这样的应用程序很感兴趣:我运行它然后它显示带有按钮的视图控制器。我单击此按钮,它显示标签栏控制器。我应该将第一个屏幕显示为模式视图还是有其他变体?你能逐步解释这个过程吗?
谢谢
我是 obj-C 编程的新手。我对如何制作这样的应用程序很感兴趣:我运行它然后它显示带有按钮的视图控制器。我单击此按钮,它显示标签栏控制器。我应该将第一个屏幕显示为模式视图还是有其他变体?你能逐步解释这个过程吗?
谢谢
我这样做的方法是拥有一个UINavigationController
. 那么RootViewController
这是你的第一个视图。
然后从“第一个视图”你可以推TabBarController
.
如果您不想要导航栏,您可以隐藏它,但使用 NavigationController 只会让在视图之间移动变得更加容易。
您可以使用委托来实现该功能。创建 LoginViewControler 并在其中定义协议。在 AppDelegate.m 文件中实现该委托方法。以下是实现您想要的功能的 sude 代码。
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate,LoginViewControllerDelegate>{
LoginViewController *loginViewController;
}
// AppDelgate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
loginViewController = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
loginViewController.delegate = self;
self.window.rootViewController = loginViewController;
[self.window makeKeyAndVisible];
return YES;
}
-(void)loginButtonPressed {
[self.window setRootViewController:nil];
self.window.rootViewController = self.viewController;
}
//LoginViewController.h
@protocol LoginViewControllerDelegate <NSObject>
@required - (void) loginButtonPressed;
@结尾
@interface LoginViewController : UIViewController{ id delegate;
}
@property (retain) id delegate;
- (IBAction)loginButtonPressed:(UIButton *)sender;
@结尾
//LoginViewController.m
- (IBAction)loginButtonPressed:(UIButton *)sender {
[_delegate loginButtonPressed];
}