Переключение внутри TableCell - как служебное приложение - PullRequest
1 голос
/ 08 февраля 2010

У меня есть вопрос относительно tableViewCell.

В ячейку / строку таблицы добавлено много значений. Теперь каждая ячейка имеет информационную кнопку как статическую. У каждого элемента массива есть словарь, и у него есть эти два значения, cellvalue и detail value.

Теперь, когда пользователь нажимает информационную кнопку, сама ячейка переворачивается и отображает сведения о ней.

Смотрите, у нас есть служебное приложение в качестве примера переворота, но в служебном приложении полностью перевернут контроллер представления.

Я пробовал следующий код.

В качестве примера этой анимации переключения:

  • Открытая панель приборов
  • перетаскивание часов на экране
  • теперь смотрите часы, в нижней части есть информационная кнопка.
  • нажмите на эту кнопку
  • часы будут перевернуты.
  • теперь нажмите на готово. это будет перевернуто снова к оригиналу

Я хочу реализовать то же самое, и у меня есть два значения для этого.

-(void)btnInfoTapped:(NSDictionary*)sender cellID:(NSString*)cellID{
    if(tmpVCtr!=nil && [tmpVCtr retainCount]>0){ [tmpVCtr release]; tmpVCtr=nil; }
    tmpVCtr=[[UIViewController alloc] init]; // temp view controller
    if(nxtEventInfoVCtr!=nil && [nxtEventInfoVCtr retainCount]>0){ [nxtEventInfoVCtr release]; nxtEventInfoVCtr=nil; }  // a view controller which is going to be flipped.
    nxtEventInfoVCtr=[[EventInfoVCtr alloc] initWithNibName:@"EventInfoVCtr" bundle:nil];
    nxtEventInfoVCtr.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
    NSLog(@"%@",[sender description]);
    // here i am settings values for flipped view controller
if([sender valueForKey:@"pendingextratext"]){
    nxtEventInfoVCtr.strText=[sender valueForKey:@"pendingextratext"];
    nxtEventInfoVCtr.strTitle=[sender valueForKey:@"pendingdescription"];
    CustomCellPending *tmp=(CustomCellPending *)[tblMain dequeueReusableCellWithIdentifier:cellID];
    [tmpVCtr setView:[tmp backgroundView]];
    [tmpVCtr presentModalViewController:nxtEventInfoVCtr animated:YES];
} else {
    nxtEventInfoVCtr.strText=[sender valueForKey:@"payextratext"];
    nxtEventInfoVCtr.strTitle=[sender valueForKey:@"paydescription"];
    CustomCellPay *tmp=(CustomCellPay *)[tblMain dequeueReusableCellWithIdentifier:cellID];
    [tmpVCtr setView:[tmp backgroundView]];
    [tmpVCtr presentModalViewController:nxtEventInfoVCtr animated:YES];
}
     }

Я хочу перевернуть контроллер представления в ячейке. Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Во-первых, и это, вероятно, просто личный вкус, но ваш код немного неопрятен - нет ничего плохого в том, что вы знаете несколько разрывов строк;)

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

Затем вы можете написать некоторый код в ваш контроллер табличного представления, который будет реагировать на нажатие информационной кнопки. Этот метод должен решить, в какую ячейку таблицы он будет переворачиваться, используя indexpath, а затем выполнить переворот стандартного вида, используя базовую анимацию или упрощенную анимацию UIView с переворотом.

Важно знать, что каждый tableViewCell не имеет контроллера для себя по умолчанию (вы можете создать его, если хотите), поэтому, когда вы имеете дело с ячейками табличного представления, большинство вещей, которые вы будет заинтересован в контроллере табличного представления.

Вещи смотрят вверх:

  • UIView анимации
    • +beginAnimations:forContext:
    • +setAnimationTransition:forView:cache:
  • Пользовательские таблицы ячеек
    • Как нарисованы ячейки таблицы
1 голос
/ 18 февраля 2010

Я добавил представление контроллера представления к представлению ячейки. Средства

[cell addSubView:aVCtr.view];

Теперь у каждого из контроллеров представления есть два вида с ним. Контроллер вида имеет кнопку и событие нажатия кнопки. Я переключаю вид.

Смотрите, следующий код - это контроллер представления, и представление контроллера представления добавляется в ячейку.

-(IBAction)btnInfoTapped:(id)sender{
    CGContextRef context = UIGraphicsGetCurrentContext();
    [UIView beginAnimations:nil context:context];
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:viewMain cache:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:1.0];
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(hideMainView) userInfo:nil repeats:NO];
    [UIView commitAnimations];
}
-(void)hideMainView{
    [viewMain addSubview:viewInfo];
}

-(IBAction)btnBack:(id)sender{
    CGContextRef context = UIGraphicsGetCurrentContext();
    [UIView beginAnimations:nil context:context];
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:viewMain cache:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:1.0];
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(hideInfoView) userInfo:nil repeats:NO];
    [UIView commitAnimations];
}

-(void)hideInfoView {
    [viewInfo removeFromSuperview];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...