Добавить изображение галочки в ту же строку, что и выбранный UITableView - PullRequest
0 голосов
/ 13 июня 2011

У меня проблема, и я надеюсь, что один из вас может предложить лучший способ выполнить то, что я пытаюсь сделать.

Итак, у меня есть UITableView со списком элементов.Каждая строка таблицы имеет кнопку «Добавить».Когда кнопка добавления нажата, выбранный элемент добавляется в основной список.(Подумайте о приложении для дел), Это прекрасно работает, никаких проблем нет.Я хочу, чтобы какой-то тип уведомления был добавлен в список.Например, галочка, которая появляется в той же строке, которая была добавлена ​​в течение двух секунд, затем исчезает.Вот мой код:

-(void)addToList:(id)sender event:(id)event{

//This is the add button method on each cell.

NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.theTableView];
NSIndexPath *indexPath = [self.theTableView indexPathForRowAtPoint: currentTouchPosition];

//Check image is the image of the checkmark that I want to display when the user adds an item.

checkImage.alpha = 0.0f;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.7f];

checkImage.alpha = 1.0f;

checkImage.frame = CGRectMake(currentTouchPosition.x + 100, currentTouchPosition.y, 25, 25);

[UIView commitAnimations];

....[only relevant code shown]...

}

Когда пользователь нажимает кнопку добавления, checkImage исчезает и позиционирует себя там, где пользователь коснулся строки + 100 пикселей вправо.Это отлично работает, но не ставит галочку в центре строки, это может быть в центре, около верха или около низа, в зависимости от того, где пользователь нажал кнопку добавления.Мне нужно это в центре или по-другому.Какие-либо предложения?Спасибо!

1 Ответ

0 голосов
/ 13 июня 2011

Как только вы получите indexPath, получите ячейку, используя,

UITableViewCell * cell = [self.theTableView cellForRowAtIndexPath:indexPath];
CGSize cellSize = cell.contentView.frame.size;

и более поздние версии,

CGPoint touchPositionInCell = [self.theTableView convertPoint:currentTouchLocation toView:cell.contentView];

CGPoint checkmarkCenter = CGPointMake(touchPositionInCell.x + 100, cellSize.height/2);
CGRect checkmarkFrame = CGRectZero;
checkmarkFrame.origin = checkmarkCenter;
checkmarkFrame = CGRectInset(checkmarkFrame, -12, -12);

checkImage.frame = checkmarkFrame;

[cell.contentView addSubview:checkImage];

Это должно поставить галочку в вертикальном центре.

И я надеюсь, что вы знаете о концепции многоразовых ячеек.Попытайтесь вспомнить indexPath ячейки, в которой находится checkImage. Если вы видите запрос на ячейку по этому indexPath, добавьте checkImage в качестве ее подпредставления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...