不同的文本字段模态调用不同的表视图控制器

时间:2014-03-03 12:23:06

标签: ios iphone uitableview uitextfield uistoryboardsegue

我有一个工作的应用程序,我只是想提高。这是一个简单的Table View控制器,有一个加号按钮;用户单击它并以模态方式显示添加条目视图控制器,其中包含UIDatePicker和4个文本字段。

现在,文本字段表现正常;你点击它们就会出现键盘。

我正在增强我的应用程序,以便用户点击TextField 1并以模态方式采用新的TableViewController,他们基本上可以创建新条目或选择现有条目。

如果用户单击textField 2,他们将以模态方式转到该文本字段的表视图控制器(与第一个表视图不同)。

我将如何做到这一点?

现在,我在第一个文本字段的故事板中添加了一个模态segue,当在正在运行的应用程序中单击该文本字段时,会出现键盘。但是,只要我关闭键盘,新的表视图控制器就会以模态方式呈现。我想消除出现的键盘并以模态方式显示表格视图。

尝试下面的代码意味着我无法以模态方式转到任何表格视图或者没有为任何文本字段拉出键盘,因为它无法区分文本字段。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return NO; 
}

区分文本字段以调用模态不同的表视图的任何帮助都会非常有用。

谢谢

2 个答案:

答案 0 :(得分:0)

我的理解是,需要在已呈现的(模态)viewController上呈现(推送)UIViewControllers(TableViews),如果是这样的话

  

首先,您必须在a中显示模态视图控制器   导航控制器:

    EmailIDValidationController *obj  = [self.storyboard instantiateViewControllerWithIdentifier:@"EmailIDValidataion"];

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:obj];
    [self presentViewController:nc animated:YES completion:Nil];
  

然后在呈现的VIewController中,你可以这样做:

  presentedViewController *obj  = [self.storyboard instantiateViewControllerWithIdentifier:@"STORYBARDID"];
  [self.navigationController pushViewController:obj animated:YES];

您需要通过UITextField事件获取tableViewControllers。所以使用它的代表;

 -(void)textFieldDidBeginEditing:(UITextField *)textField{
    presentedViewController *obj  = [self.storyboard instantiateViewControllerWithIdentifier:@"STORYBARDID"];
    [self.navigationController pushViewController:obj animated:YES];
}

答案 1 :(得分:0)

一个简单的修复。

在Storyboard中创建segue(作为Modal)并应用textFieldDidBeginEditing而不是shouldBegin,我能够设置标签并隐藏键盘。这可以通过调用新的VC来实现。