0

У меня возникла проблема с использованием UITabBarItem и UIButton в моем приложении. Моя кнопка находится внутри UITabBarItem. Когда я его нажимаю, я хочу, чтобы меня перевели на другой контроллер, чтобы отобразить PDF-файл.Нажмите на UIViewController из UITabBarItem

Вот фрагмент кода, который работает в других случаях:

- (void)viewDidLoad { 
    UIImage* imageButton = [UIImage imageNamed:@"pdf-button.png"]; 
    UIButton *buttonPDF = [UIButton buttonWithType:UIButtonTypeCustom]; 
    buttonPDF.frame = CGRectMake(SCREEN_WIDTH/2 - 100, 100, 200, 36); 
    [buttonPDF setImage:imageButton forState:UIControlStateNormal]; 
    buttonPDF.contentMode = UIViewContentModeScaleAspectFit; 
    buttonPDF.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; 
    [buttonPDF addTarget:self action:@selector(displayPDFParams:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:buttonPDF]; 
} 

-(void)displayPDFParams:(UIButton *)sender { 
    PDFProduitController *pdfController = [[PDFProduitController alloc] init]; 
    pdfController.pdf = documentParametres; 
    [self.navigationController pushViewController:pdfController animated:YES]; 
} 

displayPDFParams называется, но это не толкать меня на pdfController. Я думаю, это потому, что я не могу настроить таргетинг на родительский контроллер навигации моего приложения ... Любая помощь будет очень признательна. Заранее спасибо !

ответ

1

Проблема решена путем определить свойство в моем UIViewController (как UITabBarItem), как это:

@property (nonatomic, retain) UINavigationController *superNavController; 

И установить его в моем UITabBarController:

self.myViewController.superNavController = self.navigationController; 

Наконец я изменил мой метод displayPDFParams:

-(void)displayPDFParams:(UIButton *)sender { 

    PDFProduitController *pdfController = [[PDFProduitController alloc] init]; 
    pdfController.pdf = self.documentParametres; 

    [self.superNavController pushViewController:pdfController animated:YES]; 

} 

отлично работает!

1

Вам необходимо инициализировать контроллер корневого представления контроллером навигации. Вот код.

В вашем AppDelegate.h

#import <UIKit/UIKit.h> 
#import "HomeViewController.h" 
@class HomeViewController; 
@interface IDSAppDelegate : UIResponder <UIApplicationDelegate>{ 
    UINavigationController *nav; 
} 
@property (strong, nonatomic) HomeViewController *homeViewController; 
@end 

В вашем AppDelegate.m

#import "IDSAppDelegate.h" 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
    nav=[[UINavigationController alloc]initWithRootViewController:self.homeViewController]; 
    self.window.rootViewController = nav; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+1

его решетка ... thx Ashish .... –

Смежные вопросы