菜鸟教程小白 发表于 2022-12-13 03:50:54

ios - 将 ScrollView 委托(delegate)传递给 subview Controller


                                            <p><p>我似乎无法弄清楚如何将 ScrollView 的委托(delegate)设置为 ScrollView 中的 ViewController 。</p>

<pre><code>ChildView *child = [ init];

_scrollview.delegate = child;
</code></pre>

<p>我的 subviewController 正在使用 ScrollView 委托(delegate):</p>

<pre><code>@interface ChildView : UIViewController &lt;UIScrollViewDelegate&gt;
</code></pre>

<p>但它不会调用scrollViewDidScroll;</p>

<pre><code>- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@&#34;%f&#34;, scrollView.contentOffset.y);
}
</code></pre>

<p>基本上,我希望将 ScrollView 的 ScrollView 偏移量传递给嵌套在其中的 ViewController 。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以通过多种方式在 Objective C 中分配属性。</p>

<ol>
<li><strong>Assign</strong> 表示简单地执行变量赋值并将一个变量设置为另一个变量。如果变量超出范围,您将无法使用该变量。这通常仅用于 C 原语。 </li>
<li><strong>Weak</strong> 告诉编译器保持对该对象的引用,只要其他人强烈指向它。 </li>
<li><strong>Strong</strong> 告诉编译器保持对给定对象的强引用。这意味着在持有它的对象超出范围之前,该对象不会超出范围。 </li>
</ol>

<p>正如@Aaron 所指出的,委托(delegate)属性是使用assign 设置的。这意味着如果您设置委托(delegate)的变量超出范围,则引用将变为无效。为了解决这个问题,你必须保持一个指向对象的强指针,这样它就不会超出范围。 </p>

<p>为此,请在主视图 Controller 中创建一个属性:</p>

<pre><code>@property (strong, nonatomic) ChildView * child;
</code></pre>

<p>然后,当您创建 subview 时,将属性设置为等于它。 </p>

<pre><code>self.child = ChildView *child = [ init];
</code></pre>

<p>现在您可以设置委托(delegate),一旦您的函数终止,它就不会超出范围。 </p>

<pre><code>_scrollview.delegate = self.child;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将 ScrollView 委托(delegate)传递给 subviewController ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18425074/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18425074/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将 ScrollView 委托(delegate)传递给 subview Controller