我正在把头发弄出来,已经过了几个星期。 XCode 4.2的构建针对IOS4,所以我正在处理.XIB文件。
我正在编写一个iphone应用程序,其中有两个标签,通过tabBar提供,1)我的艺术家,2)所有艺术家。 每个标签都有一个很有趣的UITableview。 还有一个详细视图,可以显示有关工作的更多信息。 (还有一个HUD显示器,它是Matej Bukovinski的MBProgressHUD的副本)
当我调用didSelectRowAtIndexPath时,我无法调出详细视图来挽救我的生命。 (它确实正确。
我知道我必须遗漏一些基本的东西但是......我找不到它来拯救我的生命。
提前致谢。
-Rob
AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> {
UINavigationController *navigationController;
}
@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "MyArtistsViewController.h"
#import "SecondViewController.h"
#import "TicketDetailView.h"
#import "viewTest.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize tabBarController = _tabBarController;
@synthesize navigationController =_navigationController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//Test on navigationController
//navigationController = [[UINavigationController alloc] initWithRootViewController:MyArtistsViewController];
// Override point for customization after application launch.
UIViewController *viewController1 = [[MyArtistsViewController alloc] initWithNibName:@"MyArtistsViewController" bundle:nil];
//UINavigationController *viewController1 = [[MyArtistsViewController alloc] initWithNibName:@"MyArtistsViewController" bundle:nil];
//UIViewController *tvc = [[TicketViewController alloc] initWithNibName:@"TicketViewController" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:_tabBarController];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
MyArtistsViewController.h
#include "MBProgressHUD.h"
#import "TicketViewController.h"
@interface MyArtistsViewController : UIViewController
<MPMediaPickerControllerDelegate, UITableViewDelegate,CLLocationManagerDelegate,
UITableViewDataSource, MBProgressHUDDelegate>
{
IBOutlet UITableView *tblEvents;
MBProgressHUD *HUD;
}
@property (nonatomic, retain) TicketViewController *detailViewController;
@property (nonatomic, retain) IBOutlet UITableView *tblEvents;
@property (nonatomic, retain) IBOutlet CLLocationManager *locationManager;
@property (nonatomic, retain) NSString *eventID, *artistName;
@end
MyArtistsViewController.m
#import "MyArtistsViewController.h"
@synthesize ticketViewController;
@synthesize detailViewController;
@synthesize tblEvents;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Master", @"Master");
}
return self;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.detailViewController) {
self.detailViewController = [[TicketViewController alloc] initWithNibName:@"TicketViewController" bundle:nil];
}
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
- (void)viewDidLoad
//Create the Spinner or (HUD, Heads Up Display) to let the User know whats going on.
HUD = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:HUD];
[self.navigationController.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Loading";
HUD.detailsLabelText = @"Wow you read this far!";
HUD.square = YES;
[HUD show:YES];
// Does a bunch of stuff
[HUD show:NO];
答案 0 :(得分:1)
在AppDelegate.m中,您必须将UINavigationController添加到标签栏视图控制器而不是普通的View控制器:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//Test on navigationController
//navigationController = [[UINavigationController alloc] initWithRootViewController:MyArtistsViewController];
// Override point for customization after application launch.
UIViewController *artistsVC = [[[MyArtistsViewController alloc] initWithNibName:@"MyArtistsViewController" bundle:nil] autorelease]; //remove autorelease if ARC support
UINavigationController *viewController1 = [[[UINavigationController alloc] initWithRootViewController:artistsVC] autorelease];
//UIViewController *tvc = [[TicketViewController alloc] initWithNibName:@"TicketViewController" bundle:nil];
//self.navigationController = [[UINavigationController alloc] initWithRootViewController:_tabBarController];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}