2015-09-28 3 views
0

У меня есть некоторые проблемы с добавлением tapRecognizers в мои представления. Я добавляю неизвестное количество событий, новостей и купонов в свой UIScrollView, где при нажатии я хочу открыть подробный просмотр. Однако на кнопку сбои приложения со следующей ошибкойДобавить UITapGestureRecognizer для динамически добавленных просмотров

Almhults_appen.MainActivity redirectFromHomeScreen:]: unrecognized selector sent to instance 0x7f93c2d4df20 

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Almhults_appen.MainActivity redirectFromHomeScreen:]: 

Как я понимаю, я мог бы использовать в UITableView и добавить все взгляды на него. Однако, если возможно, я лично хотел бы избежать этого, но поскольку я новичок в Свифт, я не доверяю своим суждениям здесь.

if (!event_ar.isEmpty) { 
    for event: Event in event_ar { 

     ... Init EventView and add to UIScrollView 

     // Add tapGesture 
     let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(
      target: self, 
      action: "redirectFromHomeScreen:" 
     ) 
     eventView.addGestureRecognizer(tapGesture) 
    } 
} 
if (!news_ar.isEmpty) { 
    ... Add news identically to events 
} 
if (!coupon_ar.isEmpty) { 
    ... Add coupons identically to events 
} 

Edit добавлена ​​функция действия

private func redirectFromHomeScreen(sender: UITapGestureRecognizer) -> Void{ 
    ... Do stuff 
} 

Заранее спасибо :)

ответ

0

Согласно вашему отчету аварии .. сначала нужно объявить FUNTION

func redirectFromHomeScreen (sender : UITapGestureRecognizer){ 

} 

Объявляю и попробуйте еще раз

+0

Добавлен запрос на перенаправлениеFromHomeScreen(). На данный момент объявлено как закрытое, это то, что может вызвать проблемы –

+0

Глупо мне проблема, с которой я столкнулся из-за того, что redirectFromHomeScreen() объявлен как закрытый. Большое спасибо :) –

0

Вы должны добавить свой жест в виде вы будете кран. И лучший момент для добавления - это метод viewDidLoad этого вида. С Objective-C я делаю это, и он работает хорошо.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(PanToFlipPage:)]; 
    [self.view addGestureRecognizer:pan]; 

}

+0

В настоящее время я добавляю виды и и tapGestures внутри отдельной функции, вызываемой из viewDidLoad. Как я вижу, перемещение заселенности scrollview в viewDidLoad не повлияет. –

0

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

[self.view setNeedsLayout]; 
[self.view layoutIfNeeded]; 
Смежные вопросы