将初始视图控制器连接到选项卡视图控制器

时间:2015-06-10 00:21:21

标签: ios tabview

我想使用登录场景作为初始视图控制器并将其连接到选项卡视图控制器。我一直收到以下错误消息:

  

由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [UIViewController tabBar]:无法识别的选择器发送到实例0x7fe85a560fd0'

//  LogInViewController.h
#import <UIKit/UIKit.h>

@interface LogInViewController : UIViewController <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *txtUsername;
@property (weak, nonatomic) IBOutlet UITextField *txtPassword;

- (IBAction)sigininClicked:(id)sender;

- (IBAction)backgroundTap:(id)sender;
@end


//  AppDelegate.m
// 

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// Assign tab bar item with titles
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];

tabBarItem1.title = @"Trucks";
tabBarItem2.title = @"Dashboard";
tabBarItem3.title = @"Map";
tabBarItem4.title = @"Settings";

[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"iu.png"]
          withFinishedUnselectedImage:[UIImage imageNamed:@"iu.png"]];
[tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"dashboard.png"]
          withFinishedUnselectedImage:[UIImage imageNamed:@"dashboard.png"]];
[tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"globe.png"]
          withFinishedUnselectedImage:[UIImage imageNamed:@"globe.png"]];
[tabBarItem4 setFinishedSelectedImage:[UIImage imageNamed:@"settings.png"]
          withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]];

return YES;
}

1 个答案:

答案 0 :(得分:0)

我不是ios的专家,但这是我最近在我的应用程序中以编程方式(没有故事板)的方式。这是从我的appdelegate中提取的代码,但它也适用于您的目的。

在.h文件中:

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
      @property (strong, nonatomic) UITabBarController *tabBarController;
      @property (strong, nonatomic) UIWindow *window;

在.m文件中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    self.tabBarController = [[UITabBarController alloc] init];
    FirstViewController *firstvc = [[FirstViewController alloc] init];
    SecondViewController *secondvc = [[SecondViewController alloc] init];
    tabBarController.viewControllers = @[firstvc, secondvc];
    self.window.rootViewController = tabBarController;
}

编辑:

在我的FirstViewController和SecondViewController .m文件中:

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self= [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if(self){
         self.tabBarItem.image = [UIImage imageNamed:@"img_vc1"];
         self.tabBarItem.title = @"My 1st View";
    }
    return self;
}

希望这会有所帮助。