ios - 多次使用同一个 View Controller
<p><p>我是 Objective-C 的新手,有一个问题。多次搜索,但我找不到我要找的东西。</p>
<p>我正在为这个应用程序使用 Storyboard。在主屏幕上,您有一些带有标签的按钮。这些标签应该说明一个数字。按下按钮时,您将转到一个新的 viewController,您已在其中输入(在“保存”之后)返回主屏幕并使用正确的数字更新标签。 <strong>一个按钮</strong>的所有功能都很棒,我对此感到非常高兴。 </p>
<p>问题是:</p>
<p><strong>1.</strong> 因为我有多个带有标签的按钮,所以我想使用同一个 viewController 来一遍又一遍地提供输入。我尝试连接每个按钮以在标识符“AddData”下滑动到 viewController,但 Xcode 不允许在 Storyboard 中使用相同的标识符两次或更多。所以我需要别的东西。有什么想法吗?</p>
<p><strong>2.</strong>目前我使用以下代码将数据带回主屏幕:</p>
<p>homeScreenViewController</p>
<pre><code>- (IBAction)unwindToHomeScreen:(UIStoryboardSegue *)segue;
{
inputDataViewController *source = ;
self.logoOneLabel.text = source.endTotalNumber;
}
</code></pre>
<p>输入数据 ViewController :</p>
<pre><code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if (sender != self.saveButton) {
return;
} else {
if (endTotalLabelNumber > 0) {
self.endTotalNumber = ;
} else if (endTotalLabelNumber == 0 && totalLabelNumber == 0){
self.endTotalNumber = 0;
} else {
self.endTotalNumber = ;
}
}
}
</code></pre>
<p>这对一个按钮很有效,但是如何与多个按钮一起使用呢?我听说 Delegates 多次使用同一个 viewController 并将数据返回到不同的地方,但我就是不明白。有什么帮助吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>你不应该需要委托(delegate)。</p>
<p>您需要的是 ViewController 上处理输入的属性,它知道它正在为哪个按钮处理输入。</p>
<p>当您转到输入 Controller 时,根据按下的按钮设置此属性。当您放松时,获取此属性以了解要修改的标签。</p>
<p>例如,在输入 ViewController 的 <code>.h</code> 文件中,添加如下属性:</p>
<pre><code>@property (nonatomic,assign) NSInteger handlingTag;
</code></pre>
<p>或者什么,任何对你有意义的名字。</p>
<p>现在您需要实现主屏幕 ViewController 的 <code>prepareForSegue:sender:</code>。</p>
<p>使用 <code>sender</code> 参数来确定按下了哪个按钮,并在此基础上根据按钮设置输入 ViewController 的新 <code>handlingTag</code> 属性当我们放松时会知道如何处理它。</p>
<p>现在在 unwind 方法中:</p>
<pre><code>switch (source.handlingTag)
</code></pre>
<p>根据源的<code>handlingTag</code>属性创建一个开关结构,并根据这个值设置合适的标签。</p>
<hr/>
<p>正如 Jeff 在评论中指出的那样,在这里定义一个 <code>NS_ENUM</code> 用于属性而不是 <code>NSInteger</code> 是一个非常好的主意。 <code>NS_ENUM</code> 将允许您命名正在使用的值。</p></p>
<p style="font-size: 20px;">关于ios - 多次使用同一个 ViewController ,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23979917/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23979917/
</a>
</p>
页:
[1]