iphone - Plist文件中的"Load"文本并使用它(Xcode)

标签 iphone objective-c ios xcode macos

我有 4 个 UI 按钮和一个 UILabel。我想做 4 个单词(来自 plist 文件)随机显示在 4 个按钮上(一个按钮有一个单词)和一个单词显示在标签上(与按钮)。我怎样才能做到这一点?

最佳答案

假设您的 plist 名为 words.plist 并且您有一个包含 4 个 UIButtons 的数组

NSString * path = [[NSBundle mainBundle] pathForResource:@"words" ofType:@"plist"];
NSMutableArray * words = [NSMutableArray arrayWithContentsOfFile:path];

现在您在 words 数组中拥有了所有可能的单词。此时我们需要 4 个唯一的随机索引,这基本上意味着在随机洗牌后取数组的起始 4 个元素。我们将使用 Fisher-Yates shuffle algorithm正如 this 中所建议的那样回答。

for (int i = words.count - 1; i > 0; --i) {
    int r = arc4random_uniform(i);
    [words exchangeObjectAtIndex:i withObjectAtIndex:r];
}

现在我们有了一个随机打乱的单词数组,我们只需要前 4 个元素并将它们分配给按钮。它看起来像:

for (int j = 0; j < buttons.count; j++) {
    UIButton * button = [buttons objectAtIndex:j];
    button.titleLabel.text = [words objectAtIndex:j];
}

最后我们给标签分配一个词,在我们用于按钮的索引之间随机选择一个索引:

yourLabel.text = [words objectAtIndex:arc4random_uniform(buttons.count)];

这个解决方案适用于任意数量的按钮,由于混洗算法(这绝对比检查已经生成的索引更好)保证它是有效的并且由于使用 随机生成没有偏差arc4random_uniform

关于iphone - Plist文件中的"Load"文本并使用它(Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673449/

相关文章:

ios - MKMapView 重置回世界 View

iphone - iOS:UIImage 缩放以填充 UIView

ios - 如何创建二维数组 Objective C

objective-c - 音频路由不改变时的耳机插拔事件 - iOS

ios - 如何在 iOS Storyboard中使用自定义字体来支持动态类型辅助功能大小

ios - iOS 上的外部屏幕未更新

ios - 使用 React Native 在 iOS 中获取本地文件

ios - 我想快速释放 CVPixelBufferRef

ios - 来自 UIAlertController 的键盘延迟关闭

ios - 如何显示iAD?