Отправлено 22 июня 2011 - 13:19
Вот у меня есть UITableview .
Я создал 5 ячеек .
Дальше я хочу сделать так, чтобы в первой ячейке была кнопка, во второй, допустим, textfield для ввода текста, в третей label....
Как сделать lable я понимаю. Тут ниче сложного, я пишу
cell.textLabel.text = @"blablabla";
а как мне сделать, чтоб в ячейке было поле для ввода текста? Кнопка, которая будет выполнять некоторые действия?
#2t.r.o.n.
Отправлено 22 июня 2011 - 13:46
-(UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Создание ячеек
UITableViewCell *cell = [tableView ..... любой вариант получения......];
if(cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIndentifier] autorelease];
UIView *a = cell.contentView;
// И В ЭТОЙ ВЬЮШКЕ ДЕЛАЕМ ЧТО ХОТИМ
}
}
Сообщение отредактировал t.r.o.n.: 22 июня 2011 - 13:50
#3_Bitter_
Отправлено 22 июня 2011 - 13:56
- (UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"postItemCell"; // Возможно идентификатор нужно тоже в зависимости от класса ячейки указывать разный, попробуй
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
int row = [indexPath row];
if (cell == nil) {
switch (row) {
case 0: cell = [[[CellWithButton alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier frame:cellFrame] autorelease]; break;
case 1: cell = [[[CellWithText alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier frame:cellFrame] autorelease]; break;
case 2: cell = [[[CellWithLabel alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier frame:cellFrame] autorelease]; break;
}
}
return cell;
}
Код написал с головы, так что могу быть ошибки, но смысл именно такой.
P.S. Вариант, который написал t.r.o.n. кажется лучше
Сообщение отредактировал _Bitter_: 22 июня 2011 - 13:59
#4LLIo6oH
Отправлено 22 июня 2011 - 19:46
t.r.o.n. (22 июня 2011 - 13:46) писал:
-(UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Создание ячеек
UITableViewCell *cell = [tableView ..... любой вариант получения......];
if(cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIndentifier] autorelease];
UIView *a = cell.contentView;
// И В ЭТОЙ ВЬЮШКЕ ДЕЛАЕМ ЧТО ХОТИМ
}
}
И еще. я знаю как без IB создавать нужные объекты, но как их связать с созданным View?
#6LLIo6oH
Отправлено 23 июня 2011 - 12:04
Когда я создаю нужный объкт по вышеописанной схеме, то у меня во всех строчках получается один и тот же объект...
я знаю как загрузить из plist разное содержимое, в разные ячейки. а тут как поступить? чтоб лейбл в первой ячейке, кнопка во второй и т.д.
#9LLIo6oH
Отправлено 23 июня 2011 - 14:30
Но появился вопрос.
Не могу кнопку в ячейку впихнуть.
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake (0,90,100,40)];
button.titleLable.text = @"Lalala";
button.buttonType = [UIButton buttonWithType:UIButtonTypeRoundRect]; //object cannot be set
[cellView addSubview:button];
как правильно кнопку создать?
#10ATiSoft
Отправлено 23 июня 2011 - 14:45
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect buttonRect = CGRectMake(20, 115, 280, 36);
[button setFrame:buttonRect];
[button setTitle:@"button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];
[button release];
Сообщение отредактировал ATiSoft: 23 июня 2011 - 14:46
#13LLIo6oH
Отправлено 23 июня 2011 - 16:12
Воспользовавшись всеми советами, все получилось, но...
Я изначально указал, что у меня три строки.
Создал три объекта, лэйбл, текстфилд и кнопку. но они почему-то располагаются через строку. и соответственно кнопка не влазит. указываю пять, появляется кнопка, но опять же через строку. почему через ячейку, а не подряд?
Upd: Создал две кнопки. они идут одна за другой... странно
И еще, как кнопку, созданную без IB, связать с экшеном?
Сообщение отредактировал LLIo6oH: 23 июня 2011 - 16:40
#14Villy
Отправлено 23 июня 2011 - 17:11
Цитата
Выше же писалось как
Цитата
и сам метод для обработки
- (void) buttonAction:(UIButton*)sender {
}
#17LLIo6oH
Отправлено 23 июня 2011 - 21:30
Villy (23 июня 2011 - 17:11) писал:
- (UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
UIView *cellView = cell.contentView;
//textfield
UITextField *txtFirst = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
txtFirst.placeholder = @"Enter your text";
txtFirst.textColor = [UIColor blackColor];
//label
UILabel *lblSecond = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
lblSecond.text = @"Your text";
lblSecond.textColor = [UIColor blackColor];
lblSecond.backgroundColor = [UIColor blueColor];
//button
UIButton *btThird = [UIButton buttonWithType:UIButtonTypeRoundedRect];
CGRect buttonRect = CGRectMake(0, 0, 200, 40);
[btThird setFrame:buttonRect];
[btThird setTitle:@"Start stop scrolling" forState:UIControlStateNormal];
[btThird addTarget:self action:@selector(buttonActions:) forControlEvents:UIControlEventTouchUpInside];
UIButton *btFours = [UIButton buttonWithType:UIButtonTypeRoundedRect];
CGRect buttonRectt = CGRectMake(0, 0, 200, 40);
[btFours setFrame:buttonRectt];
[btFours setTitle:@"Alert message" forState:UIControlStateNormal];
[btFours addTarget:self action:@selector(Alert) forControlEvents:UIControlEventTouchUpInside];
switch (indexPath.row) {
case 0:
[cellView addSubview:txtFirst];
break;
case 1:
[cellView addSubview:lblSecond];
break;
case 3:
[cellView addSubview:btThird];
break;
case 4:
[cellView addSubview:btFours];
}
[txtFirst release];
[lblSecond release];
}
// Configure the cell.
return cell;
}
Сообщение отредактировал LLIo6oH: 23 июня 2011 - 21:31
#20LLIo6oH
Отправлено 24 июня 2011 - 13:20
Как правильно организовать доступ к созданному объекту в строке?
Ну то есть, у меня есть кнопка, по нажатию которой я хочу сделать что-нибудь с лейблом.
Но если я пишу метод взаимодействия до кода, который выше, например
-(IBAction)DoSomething{
[txtFirst resignFirstResponder];
}
То понятное дело он пишет, что txtFirth не определен.
Как же прально организовать доступ?
Сообщение отредактировал LLIo6oH: 24 июня 2011 - 13:21
No comments:
Post a Comment