I am very new to iOS development and would appreciate if experts here would be able to help me with my problem. At the moment, my application is extremely basic and does nothing much. Prior to trying to add a tab bar to my existing view, things worked fine. I am not sure what I’m missing but nothing is showing when I run the simulation. I’ll try my best to explain the structure of my application so that you guys can understand the problem better.
The following are currently present in the application…
- FeedList: A UITableViewController embedded inside a UINavigationController.
- FeedCell: A UITableViewCell created for FeedList.
- FeedItemDetail: A UIViewController with a UIScrollView within it. User will be brought to this screen by tapping on a cell in FeedList.
Below are the codes for AppDelegate.h and AppDelegate.m. I would greatly appreciate it if someone is able to tell me why nothing is showing on my simulation screen. Thanks!
//AppDelegate.h
#import <UIKit/UIKit.h>
#import "FeedList.h"
@interface AppDelegate : NSObject <UIApplicationDelegate>
{
UIWindow *window;
FeedList *feedList;
UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) FeedList *feedList;
@property (nonatomic, retain) UITabBarController *tabBarController;
- (void)customizeAppearance;
@end
//AppDelegate.m
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window, feedList, tabBarController;
// Entry point
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
tabBarController = [[UITabBarController alloc] init];
feedList = [[FeedList alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:feedList];
tabBarController.viewControllers = [NSArray arrayWithObject:nav];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
Update (problem solved)
I realized that after adding the line tabBarController.viewControllers = [NSArray arrayWithObject:nav]; things start to go haywire. After checking Apple’s Documentation, the reason is because if the value of this property is changed at runtime, the tab bar controller removes all of the old view controllers before installing the new ones. It is therefore required that we set the new tab bar controller as the root view controller.
I agree with Dustin’s comment, you should use the storyboard if you are starting off new. What I see wrong with your method, or different from typical anyway, is that you don’t add tabBarController as subview you set the rootViewController of self.window like so:
Of course there is no way to tell from the info you provided if your tableview is set up right so there is no guarantee this will display your table.