2010-06-02 3 views
0

Я разрабатываю приложение iPhone, которое удаляет строки из таблицы, когда пользователь встряхивает телефон. Я создал навигационный проект. Теперь, когда пользователь встряхивает iPhone, я хочу, чтобы заголовок панели навигации изменился на «DELETE» и кнопку удаления, чтобы появиться на панели навигации, в том же представлении. В противном случае, когда пользователь выбирает определенную строку, он должен перейти к следующему представлению. Я написал следующий код, но он не работает. Пожалуйста, помогите мне.iPhone: изменение вида, когда пользователь дрожит

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (isShaked == NO) 
    {  
    //logic to move to next view goes here. 
    } 
    else 
    { 

     self.title = @"Delete Rows"; 
     delete=[[UIBarButtonItem alloc] initWithTitle:@"Delete rows" style: 
UIBarButtonItemStyleBordered target:self action:@selector(deleteItemsSelected)] ; 

       self.navigationItem.rightBarButtonItem=self.delete; 
     MyTableCell *targetCustomCell = (MyTableCell *)[tableView cellForRowAtIndexPath:indexPath]; 
     [targetCustomCell checkAction]; 
     [self.tempArray addObject: [myModal.listOfStates objectAtIndex:indexPath.row]]; 

     //[delete addTarget:self action:@selector(deleteItemsSelected:) forControlEvents:UIControlEventTouchUpInside]; 

     self.tempTableView = tableView; 
    } 
} 

-(void)deleteItemsSelected 
{ 
    [myModal.listOfStates removeObjectsInArray:tempArray]; 
    [tempTableView reloadData]; 
} 

checkAction способ представляет собой способ пользовательские ячейки, которая используется, чтобы поставить tickmark на строке выбранной.

ответ

0

Для того, чтобы проверить, был ли телефон потрясен, вашему классу придется использовать протокол UIAccelerometerDelegate.

Например:

@interface myTableViewClass : UITableView <UIAccelerometerDelegate> 

Затем, вы должны быть в состоянии сказать, когда это было встряхивали телефон (я использую это в моем viewDidLoad):

[[UIAccelerometer sharedAccelerometer] setDelegate:self]; 
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.1]; 

После того, как пользователь качает телефон , вы можете сделать свою магию в этом методе:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
    if(fabsf(acceleration.x) > 2.2 || fabsf(acceleration.y) > 2.2 || fabsf(acceleration.z) > 2.2){ 
     //The user has shaken the iPhone 
    } 
} 

Возможно, вы можете изменить интервал, чтобы проверить больше часто и изменять параметры на акселерометре: didAccelerate метод в соответствии с вашими потребностями.

0

Проверьте эти методы/интерфейсы:

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event 

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 

Эти обработчики событий предусмотрено распознавание движения. Пройдите через документ, прежде чем использовать их.

Смежные вопросы