写个UITableViewCell的分类重写这个方法
- (void)didMoveToSuperview { [super didMoveToSuperview]; // 全局替换右侧箭头 if (self.accessoryType == UITableViewCellAccessoryDisclosureIndicator) { UIImageView *i = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"btn_enter"]]; self.accessoryView = i; } }
更新2016-2-18早,有些复杂的cell的情况下,还是没有替换成所需要的自定义箭头,那么这种情况下只能在特别的控制器里重写代理方法
#pragma mark - UITableViewDelegate - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // 不用系统自带的箭头 if (cell.accessoryType == UITableViewCellAccessoryDisclosureIndicator) { UIImage *arrowImage = [UIImage imageNamed:@"btn_enter"]; UIImageView *arrowImageView = [[UIImageView alloc] initWithImage:arrowImage]; cell.accessoryView = arrowImageView; } }
或者真的是需要全部处理箭头的话,就要用到hook了