Nano Hash - криптовалюты, майнинг, программирование

Как вызвать метод делегата суперкласса из метода делегата подкласса

У меня есть SuperClass, который реализует <UIWebViewDelegate>, в этом классе я реализовал метод webView:shouldStartLoadWithRequest:navigationType:

@interface SuperClass
...
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request1 navigationType:(UIWebViewNavigationType)navigationType {
     // SuperClass treatment
}
...
@end

Затем у меня есть SubClass, которые расширяют этот SuperClass. SubClass также реализует <UIWebViewDelegate>, а также метод webView:shouldStartLoadWithRequest:navigationType::

@interface SubClass: SuperClass
...
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request1 navigationType:(UIWebViewNavigationType)navigationType {
     // SubClass treatment
}
...
@end

Код работает для меня, потому что мне нужно выполнить специальную обработку для SubClass. Но в конкретном случае мне нужно вызвать метод SuperClass webView:shouldStartLoadWithRequest:navigationType:.

Мне нужен делегат для выполнения SuperClass UIWebViewDelegate методов.

Я пытался использовать super для вызова метода SuperClass, но безрезультатно!

Это возможно?


  • Используйте [self.super webView: webView shouldStartLoadWithRequest: request1 navigationType: navigationType]; 29.06.2016
  • Спасибо @ReshmiMajumder, но это не работает! 29.06.2016

Ответы:


1

Суперкласс

@interface ViewController () <UIWebViewDelegate>
@end

@implementation ViewController

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request1 navigationType:(UIWebViewNavigationType)navigationType 
{    
  NSLog(@"superview");
  return true;    
}

Подкласс (ViewController1.m)

@interface ViewController1 () <UIWebViewDelegate>
    
@property (strong, nonatomic) IBOutlet UIWebView *webview;

@end

@implementation ViewController1

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request1 navigationType:(UIWebViewNavigationType)navigationType {

     NSLog(@"subclass");
     [super webView:webView shouldStartLoadWithRequest:request1 navigationType:navigationType];
     return true;

 }

- (IBAction)action:(id)sender {

    NSLog(@"loading");
    [_webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.co.in"]]];

 }

В логах выходит так:

2016-06-29 17:51:39.807 Загрузка теста[31575:8224563]

2016-06-29 17:51:41.008 Тест[31575:8224563] подкласс

2016-06-29 17:51:41.008 Тест [31575:8224563] супервизор

29.06.2016
  • Должен ли я помещать объявление методов в SuperClass.h? Потому что у меня ошибка No visible @interface for 'SuperClass' declares the selector 'webView:shouldStartLoadWithRequest:navigationType:' 29.06.2016
  • Я ценю вашу помощь, но я все еще получаю ту же ошибку, не могли бы вы поделиться со мной проектом? 29.06.2016
  • Сработало, <UIWebViewDelegate> нужен и на SuperClass тоже 29.06.2016

  • 2
    @interface SuperClass
    - (void)handleWebViewShouldStartLoadWithRequest:(NSURLRequest *)request;
    
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
         [self handleWebViewShouldStartLoadWithRequest:request];
    }
    
    @end
    

    В подклассе handleWebViewShouldStartLoadWithRequest: вы можете вызвать [super handleWebViewShouldStartLoadWithRequest:request];

    29.06.2016
  • Спасибо, я думал об этом решении, но есть ли способ, которым делегат вызывает методы SuperClass UIWebViewDelegate? 29.06.2016
  • Короче думаю нет. 29.06.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..