菜鸟教程小白 发表于 2022-12-13 02:24:27

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


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

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

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

<p><strong>MyFormViewController.h</strong></p>

<pre><code>protocol MyCustomDelegate &lt;NSObject&gt;

@required

- (void)addNewRecord:(myFormViewController *)formViewController itemToAdd:(Item *)item;

@end

@property (nonatomic,weak) id&lt;MyCustomDelegate&gt; delegate;
</code></pre>

<p><strong>MyFormViewController.m</strong></p>

<pre><code>@synthesize delegate;

- (IBAction)addItem:(id)sender {
    Item *item = [init];

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

    // I am having problem here, self.delegate is being null even though, it&#39;s being set in    prepareForSegue.
    if () {

      ;
    }
    else{

      // delegate is getting set to null for some reason.
      NSLog(@&#34;Delegate method not getting called...%@&#34;,delegate);
    }
}
</code></pre>

<p>在 <strong>MyTableViewController.h</strong></p>

<p>@interface MyTableViewController : UITableViewController </p>

<p><strong>MyTableViewController.m</strong></p>

<pre><code>-(void)addItem:(myFormViewController *)formViewController itemToAdd:(Item *)item{

    if(item)
    {
      MyClass *_itemClass = [initWithPath:@&#34;items/&#34;];

      ;
    }

    ;
}
</code></pre>

<p>在我的 <strong>prepareForSegue</strong> 方法中,我将 tableviewcontroller 设置为委托(delegate)。</p>

<pre><code>-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

   if (){

    myFormViewController *_showaddTopic = [init];

    _showaddTopic.delegate = self;
}
</code></pre>

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

<p>谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><pre><code>myFormViewController *_showaddTopic = [init];
_showaddTopic.delegate = self;
</code></pre>

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

<p>(请注意我使用大写字母开头的类名?总是这样做。)</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 自定义委托(delegate)为空 iOS,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16138215/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16138215/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 自定义委托(delegate)为空 iOS