2013-09-21 34 views
0

我有一个应用程序,使用菜单滑块,并在菜单底部有一行用户登出this is how the menu looks like。我很难想出一种方法将用户登录到我的启动画面this is how my storyboard looks like正确的方法来处理从表格行注销

我想达成什么

当用户点击菜单中的注销行,我想执行日志与[PFUser退出];(我用解析作为后端)并返回我的启动画面,使用storyboard id实例化splash视图或执行手动模式segue或以某种方式神奇地调用来自应用程序委托的视图。

什么我试图

我尝试了[PFUser注销]和执行手动SEGUE到这样的cellForRowAtIndexPath方法。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSString *CellIdentifier = [self.menuItems objectAtIndex:indexPath.row]; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (indexPath.row == 5) { 
     [PFUser logOut]; 
     [self performSegueWithIdentifier:@"logOutSegue" sender:self]; 
    } 

    return cell; 
} 

我能够注销用户,并显示我的启动画面,但是这是我点击菜单键进行尽快登录用户(因为indexPath.row == 5所有的时间)。

2问题

如果我曾尝试是正确的方式,我怎么能当用户点击菜单中的注销行认? 如果这不是正确的方法,那么解决这个问题的有效方法是什么?

如果有人能帮助我解决这个问题,我会非常感激。

回答

0

您遇到的问题是您从UITableView的cellForRowAtIndexPath委托方法内调用该代码。这会在tableView加载单元格时运行。相反,您希望在用户单击单元时运行,因此您需要使用UITableView的didSelectRowAtIndexPath委托方法。

看看下面的代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row==5){ 
     [PFUser logOut]; 
     [self performSegueWithIdentifier:@"logOutSegue" sender:self]; 
    } 
} 
+0

Waow我只是做了完全相同的事情[这是我的想法](http://www.appcoda.com/how-to-handle-row-selection-在-的UITableView /)。除此之外,我还必须将注销行中的segue添加到我的splash菜单中。谢谢。 – Matt

0

您应该

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

注销用户的最好办法做到这一点是提示UIAlertView中(你确定要注销?YES NO ||),以确保他没有这个missclick按钮。 在此警报视图的委托方法中,您应该从导航堆栈中弹出视图(最好的方法是popToRootViewController)。你也可以在故事板中做到这一点。

+0

这种方法的问题是,当我打开菜单,它会显示警告没有我点击注销行(这是我的问题第一个地方)。问题是确定用户点击了注销行。如何才能识别特定行的点击 – Matt