Информационная кнопка не отображает ModalView - PullRequest
0 голосов
/ 10 января 2012

При нажатии информационной кнопки не отображается ModalView

  UIBarButtonItem *infoItem = [[UIBarButtonItem alloc] 
                           initWithTitle:@"Info" 
                           style:UIBarButtonItemStyleBordered 
                           target:self
                           action:@selector(displayModalView:)]; 




- (void)displayModalView 
{

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

self.viewController = [[Infoviewcontroller alloc] init];

UINavigationController *navigationController=[[UINavigationController alloc] init];

navigationController.navigationBar.tintColor = [UIColor brownColor];  

[navigationController pushViewController:_viewController animated:YES];

[_window addSubview:navigationController.view];

self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];   

}

Кто-нибудь может помочь мне, пожалуйста, в чем проблема в этом.

Заранее большое спасибо за помощь

1 Ответ

2 голосов
/ 10 января 2012

В своем вопросе вы не указали, как вы создали свои объекты (панель инструментов и кнопки на нем), вы создаете их из XCode путем перетаскивания или из чистого кода, поэтому я постараюсь указать на общиепроблемы для обоих случаев.

Во-первых, я предполагаю, что вы используете XCode и перетаскиваете компоненты, которые вам нравятся.В этом случае вам нужно создать в .h файле Outlet, который будет связан с кнопкой на панели следующим образом:

@interface yourViewController : UIViewController
{
    UIBarButtonItem *barButton;
}

@property (nonatomic, retain) IBOutlet UIBarButtonItem *barButton;

- (void) barButtonPress;

Обратите внимание, что я добавил функцию, которая будет обрабатывать нажатие кнопки панели.Теперь вам нужно связать этот выход с элементом кнопки панели, просто в Xcode в Connection Inspector , где написано New Referencing Outlet , перетащите в поле «Владелец файла» (желтый куб).

Теперь в viewDidLoad добавьте следующее:

[barButton setTarget:self];
[barButton setAction:@selector(barButtonPress)];

Этот код свяжет вашу кнопку панели с функцией, которую вы хотите вызвать, когда вы нажимаете ее.Теперь для представления, которое вам нравится для просмотра Modal, я предполагаю, что вы уже #import это также в файле .h, давайте назовем его MyViewModal.

Внутри функции, которая будет вызываться при нажатии на панелькнопка:

- (void) barButtonPress
{
    MyViewModal *myViewModal = [[MyViewModal alloc] initWithNibName:@"MyViewModal" bundle:nil];
    [self presentModalViewController:myViewModal animated:YES];
}

Вот и все, это будет отображаться в модальном виде.Имейте в виду, что выделение нового представления выполняется в соответствии с вашими потребностями, здесь я сделал простейший случай только для иллюстрации.

ОБНОВЛЕНИЕ: Если не используется Xcode

ЕслиВы не используете Xcode, тогда у вас должна быть уже определенная панель инструментов, скажем, она называется myToolBar.Чтобы добавить кнопки на панель инструментов, мы используем способ myToolbar.items, поэтому нам нужно подготовить кнопки с их целями, прежде чем добавлять их.Вот рабочий процесс:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(barButtonPress) forControlEvents:UIControlEventAllEvents]; //same function as above
UIBarButtonItem *btn = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];
myTool.items = [NSArray arrayWithObjects:btn, nil];

Это должно сделать это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...