2014-01-17 3 views
3

У меня возникла проблема с моей пользовательской кнопкой мыши со щелчком мыши с индикатором активности нагрузки на выбранной кнопке ячеек. Если у вас есть ссылка или другой источник, пожалуйста, помогите мне. Я новичок в разработке iOS.Как добавить ActivityIndicator в пользовательскую кнопку TableviewCell?

+1

используется MBProgessbar для этого. –

+0

, если у вас есть какая-либо ссылка, пожалуйста, поделитесь ею. – niravpatel

+0

Проверьте это: https: //github.com/jdg/MBProgressHUD, если какой-либо запрос скажет мне. –

ответ

4

Это значительно проще, поскольку он не связан с какой-либо материал третьей стороны (даже если MBProgressHUD является отличным инструментом). Когда я создал ячейку, я создал UIACtivityIndicatorView и добавил ее в качестве аксессуар ячейки. Позже, когда нажимается строка, я беру ссылку на ячейку непосредственно в соответствующем indexPath, а затем получаю ее свойство accessView, являющееся представлением индикатора. Оттуда вы можете просто сказать, чтобы начать анимацию.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 

     UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

     cell.accessoryView = activityIndicator; 
    } 
    cell.textLabel.text = _items[indexPath.row]; 

    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // deselect the row if you want the cell to fade out automatically after tapping 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    // get a reference to the cell that the user tapped 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    // get the tapped cell's accessory view and cast it as the activity indicator view 
    UIActivityIndicatorView *activityIndicator = (UIActivityIndicatorView *)cell.accessoryView; 

    // tell it to start animating 
    [activityIndicator startAnimating]; 
} 

Это приводит к следующему после нажатия первой ячейки:

enter image description here

Вы должны изменить код немного в зависимости от того, когда/как вы хотите, чтобы остановить индикатор активности от спиннинг, но без дополнительной информации от вас это лучшая информация, которую я могу предоставить. Вероятно, вы захотите добавить целое число indexPath.row в свойство тега progressView, но это немного больше. Надеюсь это поможет!

EDIT

Добавить тег к кнопке это indexPath строки, и сделать что-то вроде:

- (void)showProgressViewForButton:(id)sender { 
    NSInteger tappedCellIndex = sender.tag; 

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tappedCellIndex inSection:0]; 

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

    UIActivityIndicatorView *activityIndicator = (UIActivityIndicatorView *)cell.accessoryView; 

    [activityIndicator startAnimating]; 
} 
+0

Спасибо за ваш ответ .. Он работает .. Но я использовал кнопку в пользовательской ячейке, так что клик этого; этот индикатор строки покажет. Любая идея, пожалуйста, предложите мне. – niravpatel

+0

Редактировать, чтобы добавить дополнительную информацию – Mike

Смежные вопросы