0

我创建了一个类,可以很容易地输入特定价格的金额,就像 ATM 机允许您输入金额一样,用户不输入小数。

这是一个名为 (AmountPicker) 的通用类,因此它可以在许多其他类中使用。我通过调用presentModalViewController方法来使用它,这个类使用一个 nib 文件。在 xib 内部有一个隐藏的文本字段和一个标签以及导航栏中的完成按钮。完成按钮是一个连接到名为 doneButtonPressed 的方法的 IBAction。

我想知道是否可以将此方法委托给另一个类,以便该方法内部的逻辑可以不同于已经在 amountPicker 类中定义的逻辑。

原因是,我在两个地方使用 amountPicker 类,一个用于输入购买,它获取标签文本并将值分配给 appDelegate 内的变量,当我只在一个类中使用它时这没问题,但现在有购买的 detailTableViewController 和此视图还需要提供一种更改数据的方法,以防输入错误。

所以在详细视图中我使用自定义标题,自定义标题有一个用于购买名称的文本字段,一个用于激活 AmountPicker 的按钮和一个金额标签,当按下金额按钮时,AmountPicker 类会弹出向上,用户输入金额并按下完成按钮,现在,这是我需要更改 doneButton 逻辑的地方,而不是在 appDelegate 中使用变量。

我在想 DetailTableViewController 可以充当 amountPicker 类的委托并覆盖 doneButtonPressed 方法,以便可以使用新数量更新 amountLabel。

这是否可能,如果不是正确的方法?

4

1 回答 1

2

您的想法与通常如何使用委托是正确的。我要做的是创建一个 Objective-C 协议,也许是 AmountPickerDelegate。然后,在 AmountPicker 的界面中,您将拥有以下内容:

@interface AmountPicker : NSObject {
    NSString *someValue;
    ...
    id <AmountPickerDelegate> delegate;
}

@property (assign) id <AmountPickerDelegate> delegate;

@end

然后,在您的委托类中,您将执行以下操作:

@interface DetailTableViewController : UITableViewController <AmountPickerDelegate>

最后,在原始的 AmountPicker 类中,您可以这样调用:

[delegate amountPickerDidPressDoneButton];

这将在委托中执行。

于 2010-02-16T18:56:49.707 回答