1

私のアプリはいくつかのタブ内で実行され、そのうちの 1 つはオーバーレイビューでカメラを実行します。カメラに閉じるボタンがあり、カメラを閉じた後に前のタブまたは特定のタブをすぐに読み込む方法について助けが必要です。誰かがこの問題を解決する方向に私を向けることができますか?

4

3 に答える 3

2

カメラ ビューに移動する前に、前のタブのインデックスを保存する必要があります。カメラ ビューがキャンセルされた場合は、それが以前に選択されたタブのインデックスであると[self.tabBarController setSelectedIndex:prevTabIndex]仮定して、 を呼び出します。prevTabIndex幸運を!

編集:以下のように、 あなたのAppDelegate.hput プロパティでpreviousIndex

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, assign) int previousTabIndex;
@property (strong, nonatomic) UITabBarController *tabBarController;

@end

AppDelegate.mファイルで、次のようにします。

    #import "AppDelegate.h"

#import "FirstViewController.h"

#import "SecondViewController.h"

@implementation AppDelegate
@synthesize previousTabIndex;
- (void)dealloc
{
    [_window release];
    [_tabBarController release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    UIViewController *viewController1, *viewController2;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
        viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
    } else {
        viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil] autorelease];
        viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil] autorelease];
    }
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = @[viewController1, viewController2];
    [self.tabBarController setSelectedIndex:0];
    self.tabBarController.delegate = self;
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    self.previousTabIndex = self.tabBarController.selectedIndex;
    return YES;
}

@end

カメラ ビューには、ユーザーがキャンセル ボタンをタップしたときに、次のように呼び出されるメソッドが必要です。

- (IBAction)cancel:(id)sender {
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [self.tabBarController setSelectedIndex:appDelegate.previousTabIndex];
}

これがお役に立てば幸いです。これが役に立たない場合は、objective-c と iOS プログラミングの基本を読むことを強くお勧めします。幸運を!

編集#2

ストーリーボードの場合、Tab Bar Controllerシーン追加Objectテンプレートで、そのクラスを に設定しますAppDelegateUITabbarControllerdelegateアウトレットをAppDelegateオブジェクトに設定します。AppDelegateで、最初の編集のようにプロパティを追加し、実装します

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    self.previousTabIndex = self.tabBarController.selectedIndex;
    return YES;
}

そして、あなたのカメラビューで、ユーザーがビューをキャンセルすると

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [self.tabBarController setSelectedIndex:appDelegate.previousTabIndex];

それで全部です!幸運をあと 2 回!

于 2012-10-19T05:47:10.693 に答える
0

特定のタブに戻るか移動するには、tabBarControllerllerselectedIndexプロパティを使用します。特定のタブに移動するには、imagePickerController の didFinishPickingMediaWithInfo を使用します。

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    imgview.image = [info objectForKey:UIImagePickerControllerEditedImage];
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    self.tabBarController.selectedIndex = yourPreviousIndex or any index
}

EDIT次のように previousIndex を保存します。

Add int previousIndex in AppDelegate.h

(void)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
   previousIndex = self.tabBarController.selectedIndex;
}
于 2012-10-19T05:48:24.953 に答える
0

これはiOS 9.0で機能しました

UIStoryboard *myStoryBoard =[UIStoryboard storyboardWithName:[self.storyboard valueForKey:@"name"] bundle:nil];

UITabBarController *tabBarController = [myStoryBoard instantiateViewControllerWithIdentifier:@"tabStoryboardID"];

tabBarController.selectedIndex = 1;

[self presentViewController:tabBarController animated:YES completion:nil];
于 2015-09-29T13:21:28.290 に答える