0

我想在单击登录按钮时获取 UITableviewCell 值。当用户按下登录按钮时,我想获取第一个单元格(电子邮件)和第二个单元格(密码)值。请帮我。

在此处输入图像描述

谢谢!谢莱什

4

6 回答 6

3

请尝试使用这个。我希望它可以帮助你。但是您应该将标签 1 分配给电子邮件,将 2 分配给密码文本字段。

-(IBAction)loginBtnPressed:(IBAction)sender
{
   UITableViewCell *emailCell = [self.tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
                                  UITableViewCell *passwordCell = [self.tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]] ;//pass
    UITextField *emailTxtFLd = (UITextField *)[emailCell viewWithTag:1];
    UITextField *passwordTxtFLd = (UITextField *)[passwordCell viewWithTag:2];

    NSLog(@"Email : %@",emailTxtFLd.text);
    NSLog(@"Password : %@",passwordTxtFLd.text);
}
于 2013-05-07T13:04:57.810 回答
2

您做一件事,当您将 textFiled 作为子视图添加到单元格时,将标签设置为 textFiled 就像给定的一样,

[textField setTag:-1];

而当您想从 textFiled 中获取文本时,请按照以下步骤操作。

// Getting email
CustomCell *tableCell = (CustomCell*)[myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

UITextField *myTextField = (UITextField *)[tableCell viewWithTag:-1];

NSString *emailString = [myTextField text];
NSLog(@"~~~~ email: %@", emailString);

// Getting Password
tableCell = [myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];

myTextField = (UITextField *)[tableCell viewWithTag:-1];

NSString *passwordString = [myTextField text];
NSLog(@"~~~~ password: %@", passwordString);

希望对你有帮助 :)

于 2013-05-07T13:00:25.560 回答
1

由于两个单元格都是可见的,您可以通过以下方式请求它们:

UITableViewCell *emailCell = [myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] //email
UITableViewCell *passwordCell = [myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] //password

然后假设两个 UITableViewCell 在其标题中都有一个为 UILabel 公开的属性,您可以执行以下操作:

emailCell.myLabel.text //Value of the text in the cell
于 2013-05-07T12:32:46.167 回答
1

如果电子邮件和密码已分配,那么您可以像这样在您的 IIBAction 方法中直接访问它们

在您的 .h 文件中,将此添加到电子邮件和密码 UItextfield

@interface ViewController : UIViewController
{
    UITextField *email;
    UITextField *pass;
}

现在分配并将其添加到您的单元格中

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    email = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 320, 140)];
    pass = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 320, 140)];
}



 // Table View Data Source methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  2;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:nil];

    if(cell==nil)
    {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    if(indexPath.row==0)
    {
        [cell addSubview:email];
    }
    if(indexPath.row==1)
    {
        [cell addSubview:pass];
    }

    return cell;
}

现在在您的登录按钮上应用此 IBAction

- (IBAction)loginBtnTouchUpInside:(id)sender
{
    NSLog(@"email ==== %@",email.text);
    NSLog(@"pass ==== %@",pass.text);

    NSString *strEmail = email.text; 
    NSString *strPassword = pass.text;
}

我希望这对你有用

于 2013-05-07T12:56:59.427 回答
0
-(void)ActivateLogin{


NSIndexPath *tmpIndexPath0 = [NSIndexPath indexPathForRow:0 inSection:0];
NSIndexPath *tmpIndexPath1 = [NSIndexPath indexPathForRow:1 inSection:0];

CustomCell *cellCopy0 =(CustomCell*) [tableViewName cellForRowAtIndexPath:tmpIndexPath0];
CustomCell *cellCopy1 =(CustomCell*) [tableViewName cellForRowAtIndexPath:tmpIndexPath1];


NSString *strEmail = @""; NSString *strPassword = @"";

strEmail = cellCopy0.tf.text;
strPassword = cellCopy1.tf.text;

if(![strEmail isEqualToString:@""] && ![strPassword isEqualToString:@""]){

... //Do what you want to do with the data

}
else{
//Alert user to enter credentials
}

}
于 2013-05-07T12:49:56.470 回答
0

最简单的方法是将 textField 值保存在 textField 委托中的单独字符串中,如下所示。

-(void)textFieldDidEndEditing:(UITextField *)textField{
 stringEmail = textField.text;
}

并使用字符串值进行进一步处理。通过设置标签来实现。

谢谢你。

于 2013-05-07T12:53:35.013 回答