0

私はiphoneアプリケーションを構築しています。

2 つのタブ項目を持つ tabbarcontroller があります。各タブ項目は、異なるナビゲーション コントローラーにリンクしています。各ナビゲーションコントローラーは、テーブルビューコントローラーの階層にリンクしています。ユーザーがタブ 1 をクリックし、次にテーブル内の項目をクリックし、次にタブ 2 をクリックし、さらにタブ 1 をクリックすると、アプリケーションは、ユーザーがタブ 2 をクリックする前に見ていたテーブルを表示します。

タブ 1 を離れる前に見ていた最新のテーブルを表示する代わりに、タブ 1 をクリックするたびにタブ 1 の最初のテーブルを表示するようにアプリを取得するにはどうすればよいですか?

xcodeストーリーボードを使用するのではなく、プログラムによるソリューションを好みます。しかし、何も存在しない場合は、ストーリーボード ソリューションでも問題ありません。

4

3 に答える 3

0

私のappdelegate.hファイルで、行を変更しました

@interface wscAppDelegate : UIResponder <UIApplicationDelegate>

@interface wscAppDelegate : UIResponder <UIApplicationDelegate,UITabBarControllerDelegate>

次に、viewDidLoad 関数の CustomTabBarController に次の行を追加しました。

wscAppDelegate *appDelegate = (wscAppDelegate *)[[UIApplication sharedApplication] delegate];
self.delegate = appDelegate;

次に、 appdelegate.m ファイルに、この関数を追加しました

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    for(int c=0; c<[tabBarController.viewControllers count]; c++)
    {
        UINavigationController * navcontroller = [tabBarController.viewControllers objectAtIndex:c];

        [navcontroller popToRootViewControllerAnimated:YES];
    }    

    return YES;

}
于 2012-06-06T00:40:52.280 に答える
0

popToRootViewControllerAnimated:TabBarController が表示されているタブを変更するときに、NavigationController で呼び出します。

于 2012-06-04T21:51:08.000 に答える
0

この基本的なサンプルを試して、各 UItabBarItem の UItabBar と UInavigationController をゼロから作成します。

ヘッダー ファイル (appdelegate.h) に、次のデリゲートを追加します。

@interface AppDelegate : UIResponder <UIApplicationDelegate,UITabBarControllerDelegate>

"didFinishLaunchingWithOptions" という関数で、コードの次の部分を追加します。

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

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UINavigationController *navController=[[UINavigationController alloc] init];
m_ViewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil]; 
[navController pushViewController:m_ViewController1 animated:NO];

UINavigationController *navController2=[[UINavigationController alloc] init];
m_ViewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; 
[navController pushViewController:m_ViewController2 animated:NO];

UITabBarController *mtabBarController = [[UITabBarController alloc] init];
mtabBarController.view.frame = CGRectMake(0, 0, 320, 460);

// Set each tab to show an appropriate view controller
[mtabBarController setViewControllers:  [NSArray arrayWithObjects:navController1,navController1,navController2, nil]];

self.window.rootViewController = mtabBarController;    
mtabBarController.delegate = self;
[self.window makeKeyAndVisible];

return YES;
}

次に、この関数に popToRootViewControllerAnimated 関数を追加することを忘れないでください。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    [m_ViewController1.navigationController popToRootViewControllerAnimated:YES];
    [m_ViewController2.navigationController popToRootViewControllerAnimated:YES];
    return YES;
}
于 2012-06-04T22:03:14.710 に答える