0

問題が 1 つあります。私のアプリ(タブ付きスタイル)では、テキストを含む1つのviewcontrollerと、テーブルビュー(RSSリーダー)を含む2つ目のviewcontrollerがあります。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
4

1 に答える 1

0

dealloc から、arc を使用していないことがわかります。いくつかのメモリ リークがあります。必ずリリースvc1vc2てくださいdidFinishLaunchingWithOptions。タブ バー コントローラはそれらを保持します。

プロパティはおそらく必要ないのでnavigationController、必要になることがわかるまで削除することをお勧めします。

次のようにタブ バー コントローラーに追加する前に、RSS ビュー (vc2?) を nav コントローラーに追加することをお勧めします。

[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];
于 2013-02-16T18:47:37.177 に答える