#objective-c #cocoa-touch #ios #uitableview #uibutton
#objective-c #cocoa-touch #iOS #uitableview #uibutton
Вопрос:
Я пытаюсь поместить UIButton
внутри UITableViewCell
.
UITableView
Также содержит ячейки, содержащие UILabels
, и в ячейках нарисован градиентный фон. Проблема, которую я вижу, заключается в том, что my UIButton
— это просто заполненная черная ячейка без текстового отображения, и изменение свойств цвета и цвета фона, похоже, ничего не делает.
Вот код, который я использую для создания кнопки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"InAppViewController, doing this - width= %f", self.wdth);
static NSString *ProductTableIdentifier = @"ProductTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ProductTableIdentifier];
if (cell == nil)
{
if (self.wdth >= 700) {
CGRect cellFrame = CGRectMake(0, 0, (self.wdth - 100), 40);
cell = [[[UITableViewCell alloc] initWithFrame:cellFrame reuseIdentifier: ProductTableIdentifier] autorelease];
// Set up some labels...
CGRect seenValueRect = CGRectMake(self.wdth-320, 0, 100, 40);
UIButton *seenValue = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[seenValue setBackgroundColor:[UIColor greenColor]];
seenValue.tag = kSeenValueTag;
seenValue.frame = seenValueRect;
[seenValue setTitle:@"I'm a clone" forState:UIControlStateNormal];
[cell.contentView addSubview:seenValue];
[seenValue release];
// Continue setting up cell...
Ссылка pastebin содержит код для всей cellForRowAtIndexPath()
функции (для UITableView
рассматриваемой).
Комментарии:
1. Взгляните на раздел Настройки ячеек в
UITableView
документации iOS: developer.apple.com/library/ios/#documentation/userexperience /…
Ответ №1:
Возможно, проблема в том, что вы выпускаете UIButton, инициализированный с помощью инициализатора удобства [UIButton buttonWithType:(UIButtonType)]
. Попробуйте удалить [button release]
Ответ №2:
Не может быть даже того, что вам нужно сделать [cell addSubview:seenValue];
вместо [cell.contentView addSubview:seenValue];
Вы также могли бы попробовать сделать CGRectMake(110, 11, 185, 30)
вместо CGRectMake(self.wdth-320, 0, 100, 40)
: я использую это, и это работает хорошо, но я не знаю, то ли это, что вам нужно