iOS-具有表视图和子视图的选项卡应用程序



我有一个问题。在我的应用程序中(它是选项卡式的),我有一个带有一些文本的视图控制器,第二个带有表视图(RSS阅读器)。当我只有RSS并且它被设置为单视图应用程序时,子视图形式的RSS是有效的,但当我设置选项卡应用程序并点击表视图中的某个帖子时,子查看没有出现。。。有人能帮我吗?

这是我的代码:

AppDelegate.h

         #import <UIKit/UIKit.h>
@interface MWFeedParserAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end

AppDelegate.m

#import "MWFeedParserAppDelegate.h"
#import "ViewController1.h"
#import "RootViewController.h"
@implementation MWFeedParserAppDelegate
@synthesize window;
@synthesize navigationController;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after app launch
    UITabBarController *tbc = [[UITabBarController alloc]init];
    ViewController1 *vc1 = [[ViewController1 alloc]init];
    RootViewController *vc2 = [[RootViewController alloc]init];
    [vc1.tabBarItem setTitle:@"Tab1"];
    [vc2.tabBarItem setTitle:@"Tab2"];
    [tbc setViewControllers:[NSArray arrayWithObjects:vc1, vc2, nil]];
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
    [window setRootViewController:tbc];
    return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application {
    // Save data if appropriate
}
#pragma mark -
#pragma mark Memory management
- (void)dealloc {
    [navigationController release];
    [window release];
    [super dealloc];
}

@end

从dealloc中,我看到您没有使用arc。你有一些内存泄漏;请确保在didFinishLaunchingWithOptions中释放vc1vc2,选项卡栏控制器将保留它们。

你可能不需要navigationController属性,建议你删除它,直到你知道你需要它。

我想你会想把你的RSS视图(vc2?)添加到导航控制器,然后再添加到标签栏控制器,如下所示:

[tbc setViewControllers:[NSArray arrayWithObjects:vc1, [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease], nil]];

并删除这一行:

[window addSubview:[navigationController view]];

祝你好运!!

编辑拼写更多:

ViewController1 *vc1 = [[[ViewController1 alloc] init] autorelease];
RootViewController *vc2 = [[[RootViewController alloc] init] autorelease];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease];
UITabBarController *tbc = [[[UITabBarController alloc] init] autorelease];
[tbc setViewControllers:@[vc1, navController]];
[window makeKeyAndVisible];
[window setRootViewController:tbc];

最新更新