ios - 未为协议(protocol)调用委托(delegate) respondsToSelector

标签 ios objective-c xcode protocols

我是委托(delegate)方法的新手。我想知道为什么没有为我的代表调用我的“respondsToSelector”。我确信我把所有东西都放在了正确的地方。如果您需要更多信息,请告诉我!!!我环顾四周,但仍未找到有效的解决方案!

谢谢大家!

模态.h

    @protocol Profession <NSObject>

    -(void)profession:(NSString *)job;

    @end


   @interface ProfessionListingViewController : UIViewController        <UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate>{

NSString *string;
}
   @property (nonatomic, weak) id<Profession> myDelegate;
   @end

模态.m

    @synthesize myDelegate;
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
      self.profession = @"Testing!!";

      if([self.myDelegate respondsToSelector:@selector(profession:)]){
      [self.myDelegate profession:self.profession];
      }
      [self dismissViewControllerAnimated:YES completion:nil];
   }

VIEW.h

    #import <UIKit/UIKit.h>
    #import "ProfessionListingViewController.h"
    #import "LocationViewController.h"
    @interface ProfessionViewController : UIViewController <Profession>

VIEW.m

    -(IBAction)toProfessionListView:(id)sender{
      ProfessionListingViewController *modal = [[ProfessionListingViewController    alloc] init];
      modal.myDelegate = self;
       [self performSegueWithIdentifier:@"ModalProfessionList" sender:sender];
     }

     -(void)profession:(NSString *)job{
        NSString *test = job;
        NSLog(@"%@", test);
    }

最佳答案

在我看来,您实际上是在向后执行此操作 - 我会声明委托(delegate) View ,并且模式应该成为 View 的委托(delegate)。

也就是说,如果你想这样做,我怀疑问题是你正在执行一个到模态视图 Controller 的新实例的segue:

[self performSegueWithIdentifier:@"ModalProfessionList" sender:sender];

您可能想要做的是使用 prepareForSegue:,获取模态视图的实例,并在那里设置委托(delegate):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"ModalProfessionList"])
    {
        ProfessionListingViewController *modal = [segue destinationViewController];
        modal.myDelegate = self;
    }
}

关于ios - 未为协议(protocol)调用委托(delegate) respondsToSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575234/

相关文章:

iOS undefined symbol : _OBJC_IVAR_$_NSError. _code

ios - 我无法在 UnitTest 中获取 BundleVersionKey、BundleIdentiferKey

ios - Swift GameCenter 行为不正常

ios - 使位于按钮 1 下方的按钮 1 的底部边缘和按钮 2 的顶部边缘垂直居中对齐?

iOS - 核心数据自动生成模型 - 无法识别的选择器

objective-c - 查明给定字符是否表示为键盘上的物理键 (Mac OS X)

ios - iPhone - 某个区域的动画

ios - Split View的单个标题栏

ios - 从异步回调更新 UI 的问题

ios - Paypal 获取有关 redirect_url 的错误