Как программно добавить действие с помощью Storyboard

У меня есть приложения в iTunes, которые используют ViewController в качестве расширяемого/масштабируемого ScrollView с программно добавленной кнопкой и действием для этой кнопки. В настоящее время я обновляю приложение и перешел от создания приложения с использованием XIB к использованию раскадровки. Обе версии 1.0 и эта версия 2.0 строятся на одной и той же платформе xCode 4.6. Я обнаружил, что некоторый код не работает одинаково в нескольких областях, и нашел обходные пути для большинства, но не для действия с этой кнопкой. Я пытаюсь программно добавить действие к кнопке на запрограммированном ViewController. код, который работал в версии 1.0, не работает с раскадровкой. Я не помню, чтобы использовал ARC в версии 1.0, поэтому не знаю, в этом ли причина. Буду признателен за любую помощь в этом вопросе.

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

Цель: я просто пытаюсь заставить ScrollingViewController вернуться к MainViewController или вернуться к предыдущему VC, используя кнопку, добавленную в представление, которая называется BackButton.png

Вот мой код:

@interface ZoomingScrollView : UIViewController
{   
IBOutlet UIScrollView *scroller;
IBOutlet UIScrollView *imgView;
IBOutlet UIButton *myButton;  
}
@property (nonatomic, retain) UIScrollView *scroller;
@property (nonatomic, retain) UIScrollView *imgView;
@property (nonatomic, retain) UIButton *myButton;


@end

@implementation
-(void) loadView{
//Image View Scrollable
UIImageView *imgView =[[[UIImageView alloc]initWithImage:[UIImage        imageNamed:@"ZoomingImage.png"]]autorelease];
imgView.tag = 100;
UIScrollView *scroller = [[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]autorelease];
scroller.delegate = self;
scroller.minimumZoomScale = 0.25;
scroller.maximumZoomScale = 3.0;
scroller.bounces=NO;
scroller.showsHorizontalScrollIndicator=YES;
scroller.showsVerticalScrollIndicator=YES;
scroller.contentSize = imgView.frame.size;
scroller.contentOffset =CGPointMake((imgView.frame.size.width-1024)/2, (imgView.frame.size.height-768)/2);

[scroller addSubview:imgView];
self.view = scroller;


//Button Controls
UIButton *myButton=[UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(0, 20, 60, 40);
[myButton setTitle:@"goBack" forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"BackButton.png"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(goBack:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myButton];      
}

-(UIView*) viewForZoomingInScrollView: (UIScrollView *) scrollView{
return [self.view viewWithTag:100];
}

Еще раз спасибо.


person user3122899    schedule 20.12.2013    source источник
comment
можете подробно объяснить что именно не работает?   -  person kap    schedule 20.12.2013
comment
Да, когда я запускаю приложение в симуляторе, VC появляется, как и ожидалось, прокручивается и масштабируется, как и ожидалось, а кнопка отображается в верхнем левом углу, как и ожидалось. Когда я нажимаю на запрограммированную кнопку BackButton, приложение падает, и я получаю это в DebugConsole.   -  person user3122899    schedule 20.12.2013
comment
ZoomingScrollView goBack:]: нераспознанный селектор отправлен экземпляру 0x9a33e50 2013-12-20 15:53:35.626 ScrollableViewApp[1467:14003] *** Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '-[ZoomingScrollView goBack:]: непризнанный селектор послал к экземпляру 0x9a33e50' *** Первый стек бросить вызов: (0x1bfd012 0x15aae7e 0x1c884bd 0x1becbbc 0x1bec94e 0x15be705 0x4f22c0 0x4f2258 0x5b3021 0x5b357f 0x5b26e8 0x7b61d3 0x1bc5afe 0x1bc5a3d 0x1ba37c2 0x1ba2f44 0x1ba2e1b 0x2a677e3 0x2a67668 0x4eeffc 0x25c2 0x24f5 0x1) Libc ++ abi.dylib: оконечный называется метание исключение (lldb)   -  person user3122899    schedule 20.12.2013


Ответы (1)


Можете ли вы добавить код для метода goback:, который будет выглядеть как

- (void)goBack:(id)sender
{
[self.navigationalController popViewControllerAnimated:YES];
}
person MetalJr    schedule 20.12.2013
comment
Привет Гаутам, спасибо за ваш ответ. К сожалению, что не сработало. Моя конечная цель состояла в том, чтобы уменьшить масштабирование ScrollView в VC, который вернулся к первоначальному VC, независимо от того, что я сделал, мой старый код не работал. Я решил установить ScrollView и кнопку в раскадровке и использовать немного другой код. Для тех, кто хочет иметь масштабирование ScrollView в контроллере просмотра, этот код должен работать идеально. Тьфу ... По какой-то причине это не позволит мне опубликовать код. - person user3122899; 22.12.2013
comment
Хммм .. :( Можете ли вы сказать мне, какая ошибка отображается после добавления метода обрабатывания.? - person MetalJr; 23.12.2013