У меня есть viewController Controller
и вид view A
. Также ViewA
содержит кнопку. Как правило, мы вызываем функцию в том же классе, которая должна выполняться при нажатии кнопки. Но я хочу, чтобы метод в controller
выполнялся при нажатии кнопки.Функция выбора, вызванная из другого класса
Ниже приведены два метода я выработанные:
//method 1
//UIView A
-(id)initWithSelector:(SEL)callbackInB withDelegate:(id)delagateB
{
self = [super init];
if (self)
{
delegate = delegateB;
myCB = callbackInB;
}
return self;
}
//somewhere in UIView A
[btn addTarget:delegate action:myCB forControlEvents:UIControlEventTouchUpInside];
Это работает отлично .Но вместо этого, если я в качестве второго метода, он показывает «выполнить селектор может вытечь как функция селектора неизвестна» ,
//method 2
//somewhere in UIView A
[btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
-(void)btnPressed:(id)sender
{
if([delegate respondsToSelector:myCB])
[delegate performSelector:myCB];
}
удалить [БТН addTarget: делегировать действия: myCB forControlEvents: UIControlEventTouchUpInside] ; строка. [delegate performSelector: myCB] вызывается для действия myCB –
, поэтому вы спрашиваете о двух разных вещах? 1) «выполнить селектор может протекать, когда функция выбора неизвестна», когда компилятор предупреждает о компиляторе, и 2) ваша программа вылетает при запуске? По крайней мере, дайте некоторую трассировку стека или некоторую информацию о сбое, если она действительно сработает. – newacct
@newacct: программа не сбой сейчас, но почему предупреждение всплывает ?? – Subbu