objective-c - iOS:针对不同标签 ID 的按钮操作并避免切换案例程序

标签 objective-c ios

我正在开发一个 iOS 应用程序屏幕,其中有大约 25 个按钮,单击每个按钮将启动一个单独的 View Controller 。基本上,我已经实现了拥有一个“IBAction”并为每个按钮提供“标签 ID”。在此按钮操作下,基于按钮标签 ID,我正在启动每个 View Controller 。 这里的问题是,我正在通过 switch case 进行编程用于识别此按钮 ID,但我想避免使用此开关盒并希望在此处提供更有效的编程。 如何删除“switch case”但为这种情况提供更好的编程方式。

最佳答案

这里是 switch声明似乎是最干净和最有效的做事方式,你可以有一个大的if-elseif但如果你对 switch 不屑一顾那么我想这对你来说更不可能了。

如果您真的想避免切换,那么您可以做的是将您的按钮标记为 0 到 24,并使用 NSArray包含 View Controller 类名称的数组,然后使用 NSClassFromString获取类引用,从中实例化该类的对象。

然后你可以做类似的事情:

- (id)init{
    self = [super init];
    if(self){
        self.classesArray = @[@"MyControllerOne", @"MyControllerTwo", @"MyControllerThree"];
    }
    return self;
}

[...]

- (IBAction)tappedButton:(UIButton *)sender{
    NSString *viewControllerClassString = [self.classesArray objectAtIndex:sender.tag];
    id viewController = [[NSClassFromString(viewControllerClassString) alloc] init];

    // Present it modally? Push it onto the stack? 
}

关于objective-c - iOS:针对不同标签 ID 的按钮操作并避免切换案例程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851958/

相关文章:

objective-c - 是否可以从 View Controller 请求 APNS 设备 token ?

objective-c - stringByReplacingOccurrencesOfString 不起作用?

ios - 当我尝试将保存的数据更新到 Realm 时它崩溃了,图像在更新时变为零

ios - 如何获取 iPhone 设备的唯一 ID

ios - 使用 NSString 为标签设置颜色

objective-c - 我如何在 Objective-C 中使用枚举数据类型?

ios - 当其中一个值是 NSData 时,如何使用 NSJSONSerialization 存储序列化 NSDictionary?

使用 Firebase 的 iOS 推送通知

iphone - 如何提示用户在 Alert View 中输入文本

objective-c - NSMutableAttributedString iOS6 中的可点击 URL