Я могу нарисовать строку/изображение ... с drawInRect/drawAtPoint. , но как насчет того, хочу ли я добавить UIProgressView в это представление?Как нарисовать uiprogressview в подкласс UIView?
Я переопределение метода DrawRect,
так что я должен создать UIProgressView внутри DrawRect?
ОБНОВЛЕНО НИЖЕ:
Вот мой UITableViewCell подкласс другого класса (только для демонстрации, как я сделал подклассов tableViewCell) для Крумелер, я не уверен, если это правильно, но это как я обычно это делаю.
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(5.0f,5.0f,40.0f,40.0f)];
//imageView.tag = kImage;
imageView.layer.cornerRadius = 5.0;
imageView.layer.masksToBounds = YES;
[self.contentView addSubview:imageView];
nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(55.0f, 5.0f, 220.0f, 18.0f)];
//nameLabel.tag = kName;
nameLabel.font = [UIFont boldSystemFontOfSize:16];
nameLabel.textColor = [[UIColor alloc] initWithRed:18.0/255.0 green:18.0/255.0 blue:18.0/255.0 alpha:1.0f];
//nameLabel.textColor = [UIColor blackColor];
nameLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:nameLabel];
//[nameLabel release];
statusLabel = [[UILabel alloc] initWithFrame:CGRectMake(55.0f, 27.0f, 220.0f, 20.0f)];
//lastMessageLabel.tag = kName;
statusLabel.font = [UIFont systemFontOfSize:13];
statusLabel.textColor = [UIColor colorWithRed:82.0/255.0
green:82.0/255.0
blue:82.0/255.0
alpha:0.8];;
statusLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:statusLabel];
//[lastMessageLabel release];
}
return self;
}
вот как я использую его в - (ничтожной) cellForRowAtIndexPath
static NSString *CellIdentifier = @"RootViewTableCell";
RootViewTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[RootViewTableCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
//cell.backgroundView.backgroundColor = TABLE_BACKGROUND_COLOR;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
User *user = [rows objectAtIndex:indexPath.row];
cell.nameLabel.text = user.name;
cell.statusLabel.text = user.status;
if (user.photo != nil)
{
//myUser.photo = user.photo;
cell.imageView.image = user.photo;
}
else{
cell.imageView.image = [UIImage imageNamed:@"person_default"];
}
return cell;
делать я должен использовать тег для каждого из подвид? я не вижу никакой разницы, если я этого не делаю. Вы видите что-нибудь, что вызывает отставание прокрутки таблицы? потому что раньше я использовал то же самое для своего стола. источник данных таблицы - из основных данных и NSFetchedResultsController для любого вставки/удаления/обновления, но я уверен, что я храню данные в NSMutableArray в качестве источника данных, поэтому, когда я просматриваю табличное представление, нет доступа к основным данным (но все же laggy). Пожалуйста, если у вас есть какие-либо предложения, я бы хотел услышать, и я люблю этот способ больше, чем подкласс UIView, а затем переопределить drawRect.
благодаря
Я пробовал ваше решение, но оно не работает или я не понимаю его полностью. Я создаю свойство UIProgressView в моем подклассе UITableViewCell, а затем инициализирую progressView и добавляю его в ячейку: [self.contentView addSubview: progressView], также устанавливаю progressView hidden = YES по умолчанию, а затем в cellForRowAtIndexPath, на основе некоторого условия , я устанавливаю cell.progressView.hidden = NO и передаю ему значение прогресса: cell.progressView.progress = progressValue, но когда я перезагружаю приложение, я не вижу никакого progressView. не могли бы вы предоставить мне более подробную информацию? спасибо – triston
Вы не забыли инициализировать представление прогресса и установить соответствующий кадр? –
Вы правы, это мое плохое, я получил фрейм неправильно (копирование и вставка). теперь я понял это правильно. Я добавил uiprogressview в UITableViewCell как подвью. поэтому теперь я получил два подзаголовка в подклассе UITableViewCell. 1.UIProgressView, 2. UIView (содержит все остальные материалы на основе NSString). Есть еще небольшая проблема. Допустим, что уже есть 10 ячеек, когда я выполняю фоновый режим, в последнюю ячейку добавляется новый progressView, и я просматриваю представление таблицы вниз, затем вижу, что я вижу еще один точно такой же progressView, который работает в первой ячейке. Есть идеи? – triston