我正在开发一个 iOS 应用程序屏幕,其中有大约 25 个按钮,单击每个按钮将启动一个单独的视图控制器。基本上,我已经实现了拥有一个“IBAction”并为每个按钮提供“标签 ID”。在此按钮操作下,基于按钮标签 ID,我正在启动每个视图控制器。这里的问题是,我正在通过编程来switch case
识别此按钮 ID,但我想避免使用此开关盒并希望在此处提供更有效的编程。如何删除“switch case”但为这种情况提供更好的编程方式。
问问题
735 次
1 回答
3
这里的switch
声明似乎是最干净和最有效的做事方式,你可以有一个很大的if-elseif
,但如果你不予理睬,switch
那么我想这对你来说就更不可能了。
如果你真的想避免切换,那么你可以做的是将按钮从 0 标记到 24,并有一个NSArray
包含视图控制器类名称的数组,然后用于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?
}
于 2012-10-12T04:03:48.200 回答