gpt4 book ai didi

objective-c - Swift - 带有 button.tag 的枚举?

转载 作者:可可西里 更新时间:2023-11-01 00:53:43 25 4
gpt4 key购买 nike

我在 ObjC 中有这段代码我想或试图将其转换为 swift

typedef NS_ENUM(NSInteger, BB3Photo) {
kirkenType = 10 ,
festenType = 20 ,
praestType = 30
};

@property (nonatomic, assign) BB3Photo selectedPhotoType;


- (IBAction)changeImage:(id)sender {
if ([sender isKindOfClass:[UIButton class]]) {
UIButton *button = sender;
_selectedPhotoType = button.tag;
}
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Vælg Billed"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"Vælg fra Biblioteket", @"Vælg Kamera", nil];
sheet.actionSheetStyle = UIActionSheetStyleDefault;
[sheet showInView:[self.view window]];

这是我用它做的

    enum BBPhoto1: Int {
case kommunen = 10
case sagsbehandler = 20
case festen = 30
}

var selectedPhoto = BBPhoto1.self

@IBAction func changeImage(sender: AnyObject){
if sender .isKindOfClass(UIButton){
let button: UIButton = sender as UIButton
selectedPHoto = (sender as UIButton).tag as BBPhoto1 // doesent work "cannot assign that result as expression"
selectedPHoto = button.tag // doesnt work either "cannot assign that result as expression"
self.selectedPhoto = BBPhoto1.fromRaw((sender as UIButton).tag) // nope "cannot convert the expressions type () to type UIButton"

}
}

我希望能够将带有按钮标签的 switch 语句用于相同的功能但代码不同

最佳答案

您想使用 tag 作为 BBPhoto1 枚举的原始值。您可以使用条件展开来执行此操作:

@IBAction func changeImage(sender: AnyObject){
if let button = sender as UIButton {
if let photoType = BBPhoto1.fromRaw(button.tag) {
self.selectedPhoto = photoType
}
}
}

selectedPhoto 属性的声明也有问题。应该是:

var selectedPhoto: BBPhoto1?

按照您现在的方式,它不包含 BBPhoto1 值,而是包含 BBPhoto1 本身的类型


请注意,fromRaw 语法在 Xcode 6.1 中已更改为初始化程序:

@IBAction func changeImage(sender: AnyObject){
if let button = sender as UIButton {
if let photoType = BBPhoto1(rawValue: button.tag) {
self.selectedPhoto = photoType
}
}
}

关于objective-c - Swift - 带有 button.tag 的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com