2013-08-07 1 views
1

Я делаю приложение iOS и имеет Table View с ячейками прототипа. Я настраиваю ячейки в методе cellForRowAtIndexpath, и это работает нормально, но когда я вхожу в проблему, это когда я хочу изменить текст в кнопке после ее создания. Я хочу, чтобы он менял текст кнопки, когда я нажимаю кнопку. Я пытался сделать:Как вы меняете текст кнопки динамически, когда кнопка находится под надзором пользовательской ячейки в iOS?

[button setTitle:@"Change" forState:UIControlStateNormal]; 

внутри clickMethod, который работает, когда я нажимаю на кнопку, но это не меняет текст в последней ячейке, независимо от того, какую кнопку жму. То, что я пробовал выше, не работает, потому что у меня есть несколько экземпляров одной и той же кнопки. (По одному в каждой строке). Так кто-нибудь знает, как я могу изменить текст кнопки, на которую я нажимаю. Код, который создает кнопку:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
//configure cell 
button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self action:@selector(clickMethod:) forControlEvents:UIControlEventTouchUpInside]; 


[button setTitle:@"Button" forState:UIControlStateNormal] 
[button setTag:6789];//set tag so we can identify the button 
button.Frame=CGRectMake(218, 5, 99, 53); 
[cell addSubview:button];//put the button in the cell 
[cell setIndentationWidth:45]; 
[cell setIndentationLevel:1]; 
return cell;//return the cell object 

Помощь приветствуется. Я могу опубликовать больше кода, однако я не верю, что это будет иметь отношение к вопросу. Спасибо заранее.

+0

Пожалуйста, пожалуйста, найдите его в Google, прежде чем спрашивать. Уже доступно множество решений. – TheTiger

+0

Я смотрел раньше, и ничего не мог найти, но я снова посмотрю. – user2615467

+0

И ваша камера не выглядит обычаем ... не так ли? – TheTiger

ответ

1

Вы не можете установить заголовок на кнопку, так как метод cellForRowAtIndexPath: вызывает несколько раз. Если кнопка объявлена ​​глобально, она изменит название последней кнопки. Просто сделайте вот так

-(void)clickMethod:(id)sender 
{ 
    [sender setTitle:@"Change" forState:UIControlStateNormal]; 
} 

Отправитель будет иметь экземпляр нажатой кнопки.