处理表行注销的正确方法

时间:2013-09-21 22:30:36

标签: iphone ios objective-c

我有一个使用菜单滑块的应用,在菜单底部有一行供用户注销this is how the menu looks like。我很难找到一种方法将用户登录到我的初始屏幕this is how my storyboard looks like

我想要实现的目标

当用户单击菜单中的注销行时,我想使用[PFUser logOut]执行注销;(我使用解析作为后端)并返回到我的启动屏幕,使用实例化启动视图故事板id或执行手动模态segue或以某种方式神奇地从app delegate调用视图。

我尝试了什么

我尝试了[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 :(得分:0)

你应该从

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

注销用户的最佳方法是提示UIAlertView(你确定要注销吗?YES || NO)以确保他没有错过这个按钮。 在此警报视图的委托方法中,您应该只从导航堆栈弹出您的视图(最好的方法是popToRootViewController)。您也可以在故事板中执行此操作。

答案 1 :(得分:0)

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

看看下面的代码:

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