我正在开发一个 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/