ios:onclick tableviewcell如果nsuserdefaults存在goto view controller else转到另一个viewcontroller

时间:2014-02-05 09:46:56

标签: ios iphone objective-c uitableview

嗨朋友们在我的项目中开发的iphone应用程序中是新手,我正在使用storyboards我有一项任务需要在点击viewController时进行身份验证以加载tableViewCell。我已经将UITableViewCell子类化了,我从该单元格创建了segueviewController

现在问题是我需要在单击单元格时验证控制器。如果用户没有登录它应该转到登录控制器,否则它应该去活动控制器。我已在NSUserDefaults中保存了用户详细信息。但我不知道如何在cellForRowAtIndexPath

上的UITableViewCell中对其进行身份验证

这是配置单元格的代码:

else if(indexPath.row == 4) {
    static NSString *simpleTableIdentifier4 =@"MenuDetails4";
    activismCell *cell4 = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier4 forIndexPath:indexPath];
    cell4.imgactivism.image= [UIImage imageNamed:@"icon5.png"];
    cell4.activism.text = localize(@"some.activism");
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if([defaults objectForKey:@"firstname"]!=NULL  && [defaults objectForKey:@"lastname"]!=NULL) {
        [self performSegueWithIdentifier:@"goto" id:indexpath];
    }

else if ([defaults objectForKey:@"firstname"] ==NULL  && [defaults objectForKey:@"lastname"]==NULL) {
    [self performSegueWithIdentifier:@"login" id:indexpath];
}
    return cell4;

如果用户已经登录,则单击该特定tableViewCell时应该转到activity ViewController否则它应该转到登录视图控制器。

请帮我怎么做。提前致谢

2 个答案:

答案 0 :(得分:2)

您不在方法cellForRowAtIndexPath中执行segue,您需要将此代码放在方法中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"firstname"]!=NULL  && [defaults objectForKey:@"lastname"]!=NULL){
[self performSegueWithIdentifier:@"goto" id:indexpath];
}
else if ([defaults objectForKey:@"firstname"] ==NULL  && [defaults objectForKey:@"lastname"]==NULL) {
[self performSegueWithIdentifier:@"login" id:indexpath];
}
}

在此方法中,您可以检查nsuserdefaults,然后相应地执行segue。

答案 1 :(得分:0)

您好,如果您想在选择特定行后移动。那么您需要实现tableView的这种方法。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
           //You can apply your logic of selected row.

            ViewControllerName *VC=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerName"];
            aboutUsVC.strQuote=[quoteArry objectAtIndex:[indexPath row]];

            [self.navigationController pushViewController:VC animated:YES];

              //This one for presenting the viewController modally
            //[self presentViewController:VC animated:YES completion:nil];
}

由于