ios - 如何让应用程序从变量名运行方法

标签 ios methods nsstring

<分区>

我正在 Xcode 中制作一个应用程序,我的目标是按下按钮时将运行一个方法。问题是第一次按下按钮时我想更改一个变量/NSString,所以下次按下它时它会做其他事情。顺便说一下,我有 375 种不同的方法可以使用,具体取决于变量名。

如果你能帮助我,我将不胜感激。

我还没有添加所有的方法

我的代码是

//
//  Game.m
//  Trivia in a Jar
//
//  Created by Jayden Kelly on 12/11/2013.
//  Copyright (c) 2013 Jaydz Media. All rights reserved.
//
#import "Game.h"
#import "Categories.h"
@interface Game ()
@end
@implementation Game
-(IBAction)AnswerLabel1:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer1.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        NSString *name = @"Question8Science"; SEL selector = NSSelectorFromString(name); [self performSelector:selector];
    }
    else {
        [self Question5Science];
    }
}
-(IBAction)AnswerLabel2:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer2.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        [self Question5Science];
    }else {
        [self Question5Science];    }
}
-(IBAction)AnswerLabel3:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer3.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        [self Question5Science];
    }else {
        [self Question5Science];
    }
}
-(void)Prepare{
    QuestionLabel.text = [NSString stringWithFormat:@"%@", Question];
    [Answer1 setTitle:[NSString stringWithFormat:@"%@",OAnswer1] forState:UIControlStateNormal];
    [Answer2 setTitle:[NSString stringWithFormat:@"%@",OAnswer2] forState:UIControlStateNormal];
    [Answer3 setTitle:[NSString stringWithFormat:@"%@",OAnswer3] forState:UIControlStateNormal];
}
-(void)Question{

}
-(void)Question1Science{
    Question = [NSString stringWithFormat:@"What is the term used to explain the process of plant turning carbon dioxide to Oxygen?"];
    OAnswer1 = [NSString stringWithFormat:@"Transpiration"];
    OAnswer2 = [NSString stringWithFormat:@"Precipitation"];
    OAnswer3 = [NSString stringWithFormat:@"Plants don’t turn carbon dioxide into Oxygen."];
    CorrectAnswer = [NSString stringWithFormat:@"%@", OAnswer1];
    [self Prepare];
}
-(void)Question2Science{
    Question = [NSString stringWithFormat:@"The Metal Bronze is made by mixing Copper and What?"];
    OAnswer1 = [NSString stringWithFormat:@"Copper and Aluminium"];
    OAnswer2 = [NSString stringWithFormat:@"Copper and Iron"];
    OAnswer3 = [NSString stringWithFormat:@"Copper and Tin"];
    CorrectAnswer = [NSString stringWithFormat:@"Copper and Tin"];
        [self Prepare];
}
-(void)Question3Science{
    Question = [NSString stringWithFormat:@"What is the symbol for Water?"];
    OAnswer1 = [NSString stringWithFormat:@"H2o"];
    OAnswer2 = [NSString stringWithFormat:@"Co2"];
    OAnswer3 = [NSString stringWithFormat:@"Wa"];
    CorrectAnswer = [NSString stringWithFormat:@"H20"];
    [self Prepare];
}
-(void)Question4Science{
    Question = [NSString stringWithFormat:@"How many colours are in a rainbow?"];
    OAnswer1 = [NSString stringWithFormat:@"6"];
    OAnswer2 = [NSString stringWithFormat:@"7"];
    OAnswer3 = [NSString stringWithFormat:@"8"];
    CorrectAnswer = [NSString stringWithFormat:@"7"];
    [self Prepare];
}
-(void)Question5Science{
    Question = [NSString stringWithFormat:@"What is the Largest Internal Organ in the Human Body?"];
    OAnswer1 = [NSString stringWithFormat:@"Liver"];
    OAnswer2 = [NSString stringWithFormat:@"Heart"];
    OAnswer3 = [NSString stringWithFormat:@"Lungs"];
    CorrectAnswer = [NSString stringWithFormat:@"Liver"];
    [self Prepare];
}
-(void)Question6Science{
    Question = [NSString stringWithFormat:@"Popcorn Pops Because:"];
    OAnswer1 = [NSString stringWithFormat:@"The water on the outside turns into steam and blows it up like a balloon"];
    OAnswer2 = [NSString stringWithFormat:@"The there is a hole on the inside and when it gets hot it blown up and explodes"];
    OAnswer3 = [NSString stringWithFormat:@"The Microwave sprays a magic ingredient and makes the popcorn grow magically"];
    CorrectAnswer = [NSString stringWithFormat:@"The water on the outside turns into steam and blows it up like a balloon"];
    [self Prepare];
}
-(void)Question7Science{
    Question = [NSString stringWithFormat:@"How many Bones are in The Human Skeleton?"];
    OAnswer1 = [NSString stringWithFormat:@"206"];
    OAnswer2 = [NSString stringWithFormat:@"207"];
    OAnswer3 = [NSString stringWithFormat:@"308"];
    CorrectAnswer = [NSString stringWithFormat:@"206"];
    [self Prepare];
}
-(void)Question8Science{
    Question = [NSString stringWithFormat:@"The Cranium is also know as What Part of the Body?"];
    OAnswer1 = [NSString stringWithFormat:@"Head"];
    OAnswer2 = [NSString stringWithFormat:@"Leg"];
    OAnswer3 = [NSString stringWithFormat:@"Finger"];
    CorrectAnswer = [NSString stringWithFormat:@"Head"];
}
-(void)Question9Science{
    Question = [NSString stringWithFormat:@"What part of the human body is the pupil located on?"];
    OAnswer1 = [NSString stringWithFormat:@"Chest"];
    OAnswer2 = [NSString stringWithFormat:@"Eye"];
    OAnswer1 = [NSString stringWithFormat:@"Finger"];
    CorrectAnswer = [NSString stringWithFormat:@"Eye"];
}
-(void)Question10Science{
    Question = [NSString stringWithFormat:@"How many calories does water contain?"];
    OAnswer1 = [NSString stringWithFormat:@"897 calories"];
    OAnswer2 = [NSString stringWithFormat:@"0 calories"];
    OAnswer3 = [NSString stringWithFormat:@"42 calories"];
    CorrectAnswer = [NSString stringWithFormat:@"0 calories"];
}
-(void)Question11Science{
    Question = [NSString stringWithFormat:@"What is the melting point for Iron?"];
    OAnswer1 = [NSString stringWithFormat:@"1536°C"];
    OAnswer2 = [NSString stringWithFormat:@"1537°C"];
    OAnswer3 = [NSString stringWithFormat:@"1538°C"];
    CorrectAnswer = [NSString stringWithFormat:@"1536°C"];
}
-(void)Question12Science{
    Question = [NSString stringWithFormat:@"What is the melting point for Metal?"];
    OAnswer1 = [NSString stringWithFormat:@"660°C"];
    OAnswer2 = [NSString stringWithFormat:@"720°C"];
    OAnswer3 = [NSString stringWithFormat:@"870°C"];
    CorrectAnswer = [NSString stringWithFormat:@"660°C"];
}
-(void)Question13Science{
    Question = [NSString stringWithFormat:@"Approximately how many bird species do we have in the world?"];
    OAnswer1 = [NSString stringWithFormat:@"50"];
    OAnswer2 = [NSString stringWithFormat:@"10,000"];
    OAnswer3 = [NSString stringWithFormat:@"15,000"];
    CorrectAnswer = [NSString stringWithFormat:@"10,000"];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    Next = [NSString stringWithFormat:@"7Science"];
    CategoryLabel.text = [NSString stringWithFormat:@"%@", SelectedCategory];
    [self Question13Science];
    // Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

最佳答案

如果我的理解正确,您只是想确定按下按钮时发生的事件。如果是这样,你可以尝试这样的事情:

- (IBAction)linkMeToYourButton:(UIButton *)sender
{
    if (someCondition) {
        [self doSomething];
    }else{
        [self doSomethingElse];
    }
}

关于ios - 如何让应用程序从变量名运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19963591/

相关文章:

ios - OCMock 3 不匹配字符串参数

iphone - 第一次使用协议(protocol) - Objective-C

objective-c - 将五个字符串传递给 objective-c xcode 中的方法

ios - 为什么 NSString 不响应选择器 longValue 但响应 longLongValue 和 intValue?

ios - NSString 替换 unicode 字符

ios - 从 Url Scheme 在 View Controller 上设置值

ios - 为什么只导入 UIKit 框架就可以使用 Foundation 框架中定义的类型?

ios - 自定义删除不响应 ToSelector

iphone - 视口(viewport)元标记不适用于 iPhone

ruby - Ruby 中的空体方法有什么用?