Как получить UIBarButtonSystemItem на UIToolBar, чтобы перейти к другому представлению - PullRequest
2 голосов
/ 15 марта 2011

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

У меня возникли проблемы с получением UIBarButtonSystemItem, чтобы при нажатии вернуть меня к другому представлению. Я определил UIToolBar с UIBarButtonSystemItem, который компилируется и работает отлично. Однако при нажатии кнопки приложение вылетает.

Это код, который я использовал для определения UIToolBar и UIButton:

//create toolbar using new
toolbar = [UIToolbar new];
toolbar.barStyle = UIBarStyleBlackTranslucent;
[toolbar sizeToFit];
toolbar.frame = CGRectMake(0, 410, 320, 50);

//Add buttons
UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                     target:self
                     action:@selector(pressButton1:)];

Затем я добавил флекситем к этому и добавил кнопку в массив, используя следующий код:

//Use this to put space in between your toolbox buttons
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                     target:nil
                     action:nil];

//Add buttons to the array
NSArray *items = [NSArray arrayWithObjects: systemItem1, flexItem, nil];

Здесь я падаю и пытаюсь получить кнопку, чтобы перейти к предыдущему виду при нажатии с помощью следующего кода:

-(void)pressButton1:(id)sender {
    BMR_TDEE_CalculatorViewController *controller1 = [[BMR_TDEE_CalculatorViewController alloc] initWithNibName:@"BMR_TDEE_ViewController" bundle:nil];

    controller1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller1 animated:YES];
    [controller1 release];
}

Как я уже сказал, это просто сбивает мой симулятор. Он компилируется без проблем, но я предполагаю, что код в корне неверен, так как я новичок в этом. Любая объясненная справка была бы фантастической; -)

Спасибо всем

1 Ответ

1 голос
/ 15 марта 2011

Это:

UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(pressButton1:)

должно быть:

UIButton *button=[[UIButton alloc] init];
button.frame=CGRectMake(0, 0, 65, 32);
[button addTarget:self action:@selector(pressButton1:) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

Для кода (void)pressbutton теперь должно быть:

-(IBAction)pressButton1:(id)sender {
    BMR_TDEE_CalculatorViewController *controller = [[BMR_TDEE_CalculatorViewController alloc] initWithNibName:@"BMR_TDEE_CalculatorViewController" bundle:nil];
    [self.navigationController presentModalViewController:controller animated:TRUE];
}
...