如何知道通过单击哪个文本字段,推送已完成

How to know that by clicking on which textfield, the pushing is done

我是 iOS 的新人。我正在构建一个示例项目。我的项目中有四个 viewController。在第一个中有两个文本字段。一个是进乡,一个是进城。点击它们中的每一个,推到第二个 viewController 就完成了。在第二个、第三个和第四个 viewController 中,我每个人都有 table 个视图。

第二个 table 视图 viewController 我有一个国家列表,第三个 table 视图 viewController 我有一个州列表第四个 viewController 中的 table 视图 我有一个城市列表。

点击每个 table 视图推送的单元格即可完成下一个视图推送。

现在我的要求是,当我点击国家文本字段时,推送只会完成到第二个 viewController 而当我点击城市文本字段时,推送将完成到第四个 viewController.

我想知道的是,如何知道推送是从哪个文本字段完成的。

感谢任何帮助。提前致谢。

这是我的第一个viewController实现文件...

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

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

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    if (textField.tag == 1) {
        [self performSegueWithIdentifier:@"countryScene" sender:self];
    } else{
        [self performSegueWithIdentifier:@"countryScene" sender:self];
    }
    return YES;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

这是我的第二个 viewController 实现文件..

#import "CountryViewController.h"

@interface CountryViewController ()

@end

@implementation CountryViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.arrCountries = @[@"India", @"Bangladesh", @"Australia", @"New Zealand", @"South Africa", @"West Indies", @"Sri Lanka", @"England", @"Argentina", @"Brazil"];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"countryCell"];

    UILabel *lblCountry = (UILabel*)[cell.contentView viewWithTag:3];
    lblCountry.text = [self.arrCountries objectAtIndex:indexPath.row];

    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return [self.arrCountries count];

}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier: @"stateScene" sender: self];
}

@end

这是我的第三个viewController实现文件:

#import "StateViewController.h"

@interface StateViewController ()

@end

@implementation StateViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.arrStates = @[@"West Bengal", @"Uttar Pradesh", @"Madhya Pradesh", @"Jharkhand", @"Bihar", @"Tamilnadu", @"Myanmar", @"Arunachal Pradesh", @"Assam", @"Goa"];
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"stateCell"];

    UILabel *lblStates = (UILabel*)[cell.contentView viewWithTag:4];
    lblStates.text = [self.arrStates objectAtIndex:indexPath.row];

    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return [self.arrStates count];

}

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

    [self performSegueWithIdentifier: @"cityScene" sender: self];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

这是我的第四个viewController实现文件...

#import "CityViewController.h"

@interface CityViewController ()

@end

@implementation CityViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
self.arrCities = @[@"Kolkata", @"Bangalore", @"Chennai", @"Mumbai", @"Hyderabad", @"Mangalore", @"New York", @"London", @"Rio de Janeiro", @"Buenos Aires"];
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cityCell"];

    UILabel *lblCities = (UILabel*)[cell.contentView viewWithTag:5];
lblCities.text = [self.arrCities objectAtIndex:indexPath.row];

    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return [self.arrCities count];

}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier: @"showRecipeDetail" sender: self];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

我想你已经给了标签 textfield.If 标签是 1 然后是国家文本字段,否则它的城市 textfield.By 识别标签你可以切换到各自的视图控制器。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

 if (textField.tag == 1) {
 //Country view Controller
 [self performSegueWithIdentifier:@"countryScene" sender:self];
}
 else{
//City View Controller   
 [self performSegueWithIdentifier:@"cityScene" sender:self];
}

  return YES;
}

好的,

创建一个包含所选文本字段标签的实例变量。

@interface ViewController() {
    NSInteger tagSelectedTextField;
}

在您的第一个 ViewController 中,使用 setTag: 方法将标签分配给您的 TextFields。

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

    [self.textCity setTag:1];
    [self.textCountry setTag:2];
    self.txtCity.delegate = self;
    self.txtCountry.delegate = self;
}

现在,当您在委托中时,检查标签并相应地执行转场。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{


    if (textField.tag == 1) {

         [self performSegueWithIdentifier:@"cityScene" sender:self];
    } else{

         [self performSegueWithIdentifier:@"countryScene" sender:self];
    }
    tagSelectedTextField = textField.tag;
    return YES;
}

现在,当您返回此屏幕或使用通知系统时,使用此标签通过 [self.view viewWithTag:tagSelectedTextField] 取回您选择的文本字段并相应地更新文本。