我是iOS应用开发的新手。目前我正在开发一个非常简单的应用程序,它在屏幕上显示两个单词,用户选择一个,而应用程序只输出你选择的x。
我创建了两个plists,并将它们加载到一个数组中并将它们随机化在数组中。在我看来,我有两个按钮,我希望在它们上面显示单词。但是,我有两个问题.. 1。我希望应用程序启动时按钮上的标签会发生变化。因此用户无需点击按钮或任何东西。 2.我希望array_1中的一个随机单词(从plist加载)出现在随机按钮上。 button_1或button_2与列表array_2相同。
这是我到目前为止所做的。 (在论坛的帮助下(:)
- (IBAction)buttonpressed:(id)sender {
// Load contents of plist onto array
NSString *path = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
NSMutableArray *words = [NSMutableArray arrayWithContentsOfFile:path];
//shuffle them using Fisher–Yates shuffle algorithm
for (int i = words.count-1; i>=0; i--) {
int r = arc4random_uniform(words.count);
[words exchangeObjectAtIndex:i withObjectAtIndex:r];
}
// assign word to the button
for (int j =0; j<_WordButton.count; j++) {
UIButton *button = [_WordButton objectAtIndex:j];
button.titleLabel.text = [words objectAtIndex:j];
}
}
上面的代码中有明显的缺陷,例如它只使用一个plist,并且它不会随机显示两个按钮上的单词。
答案 0 :(得分:4)
您可以使用以下代码设置UIButton标题:
[button setTitle:titleString forState:UIControlStateNormal];
答案 1 :(得分:2)
要实现您的目标,您必须为.xib文件上的按钮创建一个IBOutlet。您可以使用一个简单的Xcode快捷方式来创建IBOutlet代码并同时从.xib文件到代码的连接:
在Xcode右上方的工具栏中有一个图标,可让您切换不同的模式,选择“助手编辑器”。 Interface Builder将滑过以与代码文件共享窗口,这应该会自动选择ViewController.h
工具栏应如下所示:
在代码中插入一些花括号:
`
@interface CustomViewController : UIViewController {
// This is where you will control-drag to from the Interface Builder to have it create an IBOutlet to the button for you
}
// Your already set-up IBAction Method
- (IBAction)buttonpressed:(id)sender
@end
`
控制 - 从希望标签更改的按钮拖动到.h文件中的花括号之间的区域:
将出现一个新对话框。确保设置如下:
一个。连接= IBOutlet
湾名称=(无论你想叫什么按钮,你都使用了'_wordButton')
C。 Type = UIButton
d。存储=弱
- (IBAction)buttonpressed:(id)sender
和您的应用程序中:didFinishLaunchingWithOptions(要在启动应用程序时自动将单词加载到标签中),您可以使用以下内容设置按钮标题:`
// Create a string from the word that you pull out of the plist file
NSString *labelWord = ???;
// Set the label of the button
[_wordLabel setTitle:word forState:UIControlStateNormal];
`
答案 2 :(得分:0)
这样做:
-(void)viewDidLoad{
[self setnewtitle];
}
-(void)setnewtitle{
NSString *pathone = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
NSMutableArray *wordsOne = [NSMutableArray arrayWithContentsOfFile:pathone];
NSString *pathtwo = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
NSMutableArray *wordsTwo = [NSMutableArray arrayWithContentsOfFile:pathtwo];
int words = "the number of objects(words) in your plist";
int randombutton = arc4random() % 2;
int randomplist = arc4random() % 2;
int randomWord = arc4random() % words;
if (randombutton==0){
if (randomplist==0){
[[_WordButton objectatIndex:randombutton] setTitle:[wordsOne objectatIndex:randomWord]];
} else {
[[_WordButton objectatIndex:randombutton] setTitle:[wordsTwo objectatIndex:randomWord]];
}
}else {
if (randomplist==0){
[[_WordButton objectatIndex:randombutton] setTitle:[wordsOne objectatIndex:randomWord]];
} else {
[[_WordButton objectatIndex:randombutton] setTitle:[wordsTwo objectatIndex:randomWord]];
}
}
}
请确保包含按钮的数组中的按钮也已初始化并已分配 如果您有任何疑问,请随意提问