• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - 自定义委托(delegate)为空 iOS

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:24:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我知道这应该很容易解决,但我看不出哪里出了问题。可能是额外的一对会有所帮助。这就是我想要做的。

  1. 在我的表格 View Controller 中,导航 Controller 上有一个 (+) 按钮用于添加新项目。
  2. 我有一个模态序列,可以将它带到下一个 View Controller 。用户填写表格并点击保存表格 View Controller 重新加载新添加的记录。

为此,我使用委托(delegate)实现了协议(protocol)。

MyFormViewController.h

protocol MyCustomDelegate <NSObject>

@required

- (void)addNewRecordmyFormViewController *)formViewController itemToAddItem *)item;

@end

@property (nonatomic,weak) id<MyCustomDelegate> delegate;

MyFormViewController.m

@synthesize delegate;

- (IBAction)addItemid)sender {
    Item *item = [[Item alloc]init];

    item.name = itemName.text;
    item.desc = itemDescription.text;

    // I am having problem here, self.delegate is being null even though, it's being set in    prepareForSegue.
    if ([self.delegate respondsToSelectorselector(addNewRecord]) {

        [self.delegate addNewRecord:self itemToAdd:item];
    }
    else{

        // delegate is getting set to null for some reason.
        NSLog(@"Delegate method not getting called...%@",delegate);
    }
}

MyTableViewController.h

@interface MyTableViewController : UITableViewController

MyTableViewController.m

-(void)addItemmyFormViewController *)formViewController itemToAddItem *)item{

    if(item)
    {
        MyClass *_itemClass = [[MyClass alloc]initWithPath"items/"];

        [_itemClass addItemForUser:item];
    }

    [formViewController dismissViewControllerAnimated:YES completion:nil];
}

在我的 prepareForSegue 方法中,我将 tableviewcontroller 设置为委托(delegate)。

-(void)prepareForSegueUIStoryboardSegue *)segue senderid)sender{

   if ([segue.identifier isEqualToString"addItemSegue"]){

    myFormViewController *_showaddTopic = [[myFormViewController alloc]init];

    _showaddTopic.delegate = self;
}

毕竟,我在 myFormViewController 中的委托(delegate)被设置为“null”。我不确定为什么它不起作用。这是非常基本的东西,但让我很难过。

谢谢



Best Answer-推荐答案


myFormViewController *_showaddTopic = [[myFormViewController alloc]init];
_showaddTopic.delegate = self;

你的问题。您正在创建一个 MyFormViewController。但那是错误的 MyFormViewController;您想使用 已经 segue 的目标 Controller 的那个。所以你设置了错误的对象的委托(delegate)。

(请注意我使用大写字母开头的类名?总是这样做。)

关于iphone - 自定义委托(delegate)为空 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138215/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap