菜鸟教程小白 发表于 2022-12-13 05:54:11

ios - 在 Controller 之间传递难度级别


                                            <p><p>我正在寻找在 ViewController 之间传递难度级别的最佳方法。 </p>

<p>目前我将此设置作为字符串。有简单/中等/困难三个选项,我知道这不是最好的方法,所以我在这里寻找正确的方法。 </p>

<p>目前我检查按钮上的标签并设置如下字符串值:</p>

<pre><code>if (sender.tag == 10) {
    self.turnDifficulty = @&#34;Easy&#34;;
} else if (sender.tag == 20) {
    self.turnDifficulty = @&#34;Medium&#34;;
} else if (sender.tag == 30) {
    self.turnDifficulty = @&#34;Hard&#34;;
}
</code></pre>

<p>然后我将值传递给 <code>prepareForSegue</code> 方法。这种方法的替代方法是什么?虽然这里没有问题并且工作正常,但在这里使用字符串并不是很干净。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我们使用枚举在 Objective-C(实际上,在 C 和 C++ 中也是如此)中处理字符串的另一种方法:</p>

<pre><code>typedef enum Difficulty {
    DIFFICULTY_EASY
,   DIFFICULTY_MEDIUM
,   DIFFICULTY_HARD
} Difficulty;
</code></pre>

<p>在所有 ViewController 包含的 header 中声明此 <code>enum</code>,并像使用数字常量一样使用枚举常量。该语言将确保常量保持不同,即使您选择向枚举添加更多项。</p>

<p>当你声明 <code>@property</code> 或 <code>Difficulty</code> 类型的参数时,不要使用星号,因为 <code>enum</code> 是原始类型,不是引用类型。例如:</p>

<pre><code>@property (nonatomic, readwrite) Difficulty difficultyLevel;
</code></pre>

<p>或</p>

<pre><code>-(void)openWithDifficulty:(Difficulty)level;
</code></pre>

<p><strong>编辑:</strong>(谢谢,<a href="https://stackoverflow.com/users/1271826/rob" rel="noreferrer noopener nofollow">Rob</a>!)</p>

<p>从 Xcode 4.4 开始,您还可以使用显式固定的底层类型,例如</p>

<pre><code>typedef enum Difficulty : NSUInteger {
    kDifficultyEasy
,   kDifficultyMedium
,   kDifficultyHard
} Difficulty;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Controller 之间传递难度级别,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20952997/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20952997/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Controller 之间传递难度级别