有的时候同一个页面有好几按钮,每一个按钮对应一个方法调用,一般代码我们都会用switch来进行区分,代码如下:
switch([x intValue])
{
case 0:
{
[self loadFastRegisterView];
break;
}
case 1:
{
[self loadRealNameView];
break;
}
case 2:
{
[self loadBindPhoneView];
break;
}
case 3:
{
[self loadChangePasswordView];
break;
}
case 4:
{
[self loadServicerCenterView];
break;
}
default:
{
break;
}
}
是不是感觉很low?我们可以使用runtime来实现这一需求:
SEL selectors[] =
{
@selector(loadFastRegisterView),
@selector(loadRealNameView),
@selector(loadBindPhoneView),
@selector(loadChangePasswordView),
@selector(loadServicerCenterView)
};
if ([x intValue] < sizeof(selectors) / sizeof(SEL))
{
void(*imp)(id, SEL) = (typeof(imp))[self methodForSelector:selectors[[x intValue]]];
imp(self, selectors[[x intValue]]);
}
瞬间逼格高了很多。
还有tableView的cell点击跳转不同的控制器
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Class class = NSClassFromString(self.sourceArr[indexPath.row][@"control"]);
[self.navigationController pushViewController:[class new] animated:YES];
}
网友评论