Почему мой пользовательский делегат iPhone не работает? - PullRequest
1 голос
/ 28 января 2010

Я просто пытаюсь создать простой делегат, он успешно компилируется, но сейчас он ничего не делает. Пожалуйста, просмотрите мой код ниже, у FirstViewContoller и SecondViewController есть отдельные xib-файлы, у SecondViewController есть кнопка, подключенная к myMethod, конечно.

Я изучал цель c и iPhone SDK в течение нескольких месяцев, я использовал учебник и учебник lynda.com, чтобы помочь, я фактически скопировал большую часть кода, используя шаблон xcode для сервисное приложение, и я думаю, что я понимаю, что здесь происходит, но есть что-то, что я пропустил, так как кнопка не отвечает.

Если вам нужна дополнительная информация, пожалуйста, спросите.

Большое спасибо, Chris

SecondViewController.h

#import <UIKit/UIKit.h>

@protocol SecondViewControllerDelegate;


@interface SecondViewController : UIViewController {
    id <SecondViewControllerDelegate> delegate;
}

@property (nonatomic, assign) id <SecondViewControllerDelegate> delegate;


-(IBAction) myMethod;

@end

@protocol SecondViewControllerDelegate

-(void)viewControllerDidFinish:(SecondViewController *)controller;

@end

SecondViewController.m

@implementation SecondViewController

@synthesize delegate;

-(IBAction) myMethod
{
    [self.delegate viewControllerDidFinish:self];
}
//
@end

FirstViewController.h

@interface FirstViewController : UIViewController <SecondViewControllerDelegate>{
//
@end

FirstViewController.m

@implementation FirstViewController

-(void)viewControllerDidFinish:(SecondViewControllerDelegate *)controller
{
    NSLog(@"delegate is being used");
}
//
@end

Редактировать - Это старый пост, но для пояснения я просто забыл назначить делегата SecondViewController в FirstViewController

Ответы [ 2 ]

1 голос
/ 17 января 2011

Как назначить свойство делегата SecondViewController? Это последняя часть, которую мне не хватает ...

0 голосов
/ 28 января 2010

Две вещи:

  1. Ваш метод IBAction myMethod, если это действительно IBAction, должен принять аргумент: -(IBAction)myMethod:(id)sender Прежде чем винить шаблон делегата, убедитесь, что вызывается myMethod (установите точку останова и посмотрите).

  2. Кажется, объявлен ваш метод делегата, принимающий тип делегата в качестве параметра, а не viewController, который, как вам кажется, вы хотите передать туда. Все это может быть скрыто типами id, но я думаю, что вы, вероятно, захотите перенастроить объявления.

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