【问题标题】:Calling an IBAction from another method从另一个方法调用 IBAction
【发布时间】:2016-11-29 13:22:56
【问题描述】:

我是 Objective-C、Xcode 和所有好东西的新手。我是自学的。

我正在尝试从另一种方法调用IBAction

- (IBAction)strAdj:(UIStepper *)strStepper
{
    // Converts stepper to integer
    NSUInteger strvalue = strStepper.value;

    // Changes the the text to the value of the stepper
    strStat.text = [NSString stringWithFormat:@"%2d", (unsigned)strvalue];

    _strMod.text = [NSString stringWithFormat:@"%2d", (unsigned)stepperAdj(strvalue)];
    // Based on the value it change the strMod to a specific value
}

我只发布下一个代码的一部分。这是一个简单的switch 声明。我基本上想在下面的 Void 中调用上面的 IBAction。

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    switch (row) {
        case 0:
            break;
// Core races never change
        // defines dwarf stats
        case 1:
            // sets all the increases
            tempCon = 2;
            tempWis = 2;
            tempChr = -2;

            // resets all other stats
            tempStr = 0;
            tempDex = 0;
            tempInt = 0;

            // I want to call the IBAction here... 

            break;

这个IBAction 最终需要出现 15 次。上面的switch 语句在选择器更改时发生。每次步进器发生时,IBAction 都会发生。

我希望我离我想做的事情不会太远。再说一次,我最近几天一直在处理这个问题,但我找不到我要找的东西,或者如果我找到了,那么我不确定该怎么做。

【问题讨论】:

  • 为什么需要从选取器委托方法中调用步进操作?

标签: ios objective-c


【解决方案1】:

看起来你有一个让玩家选择种族的下拉菜单,每个属性(str、con、wis 等)都有一个步进器来上下调整各自的值。

我知道的不够多,无法推测,但我怀疑总体上有更好的方法。也就是说,我认为您尝试做的一个蛮力解决方案是确保您的每个步进器都有一个引用出口:stepperWis、stepperCon、stepperInt 等。然后在您的交换机中,您可以执行类似的操作(对于每个属性):

stepperWis.value = (whatever value you want);
[self strAdj:self.stepperWis];

【讨论】:

  • 是的,你有这个漂亮的地方。这是应用程序的基本概念。虽然我确信有更简单的方法可以做到这一点,但现在我仍在学习并试图弄清楚一切。首先,我只想获得一份工作副本。然后回去细化很多。现在的问题是,当我调整选择器时,它不会更新标签(步进器更改),但是当我更改步进器时,它会根据步进器值进行更新。我希望这是有道理的。
  • 我没有看到的一件事是,标签如何知道哪个步进器正在更新?正如所写的那样,无论踢哪个步进器,看起来都在更新相同的标签。
  • 每个统计数据都有一个标签。所以目前有6个步进器。每个统计数据一个。有 12 个标签。 6 用于统计分数和 6 用于统计修饰符。统计修饰符基于统计分数的值。有一个 IBAction 做同样的事情,除了它对每个统计数据都做。
  • 好的。所以一些更新。我已经决定要追求 Swift,发现 Swift 对我来说更容易学习......而且我选择使用更干净的 UI。感谢您的所有输入和帮助。它适用于更新。
【解决方案2】:

您可以像这样以编程方式调用 UIButton TouchUpInside 事件:

[YourButtonObject sendActionsForControlEvents: UIControlEventTouchUpInside];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2015-06-16
    • 1970-01-01
    • 2011-09-09
    • 2017-09-27
    相关资源
    最近更新 更多