uitextfield 和 uilabel 取决于复选标记

Posted

技术标签:

【中文标题】uitextfield 和 uilabel 取决于复选标记【英文标题】:uitextfield and uilabel depends on checkmark 【发布时间】:2012-09-11 11:31:31 【问题描述】:

在包含 8 行数据的表格视图中,我想在 otherview 中显示 8 个标签和 8 个文本字段,例如:如果用户在 uitableview 中选择(选中)4 行意味着我想在其他视图中显示 4 个标签和 4 个 texfield看法。谁能帮我解释一下这个逻辑?

- (void)viewDidLoad

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
    [lb5 setHidden:YES];
    [text5 setHidden:YES];
    [lb6 setHidden:YES];
    [text6 setHidden:YES];
    //[lb7 setHidden:YES];
    //[text7 setHidden:YES];
    //[lb8 setHidden:YES];
    //[text8 setHidden:YES];

    scrollView.frame = CGRectMake(0, 0, 320, 460);
    [scrollView setContentSize:CGSizeMake(320, 678)];

    int s=[am.genar count];
    am=(AppDelegate*)[[UIApplication sharedApplication] delegate];
    NSLog(@"test %d",[am.genar count]);
    NSLog(@"test %@",[am.genar objectAtIndex:0]);
    lb1.text=[am.genar objectAtIndex:0];
    NSLog(@"test %@",[am.genar objectAtIndex:1]);
    lb2.text=[am.genar objectAtIndex:1];
    NSLog(@"test %@",[am.genar objectAtIndex:2]);
    lb3.text=[am.genar objectAtIndex:2]; 
    NSLog(@"test %@",[am.genar objectAtIndex:3]);
    lb4.text=[am.genar objectAtIndex:3]; 

    if(s>3)
    
       [lb5 setHidden:NO];
       [text5 setHidden:NO];
        [lb6 setHidden:NO];
        [text6 setHidden:NO];
       // [lb7 setHidden:NO];
      //  [text7 setHidden:NO];
      //  [lb8 setHidden:NO];
      //  [text8 setHidden:NO];;
        NSLog(@"test %@",[am.genar objectAtIndex:4]);
        lb5.text=[am.genar objectAtIndex:4];   
        NSLog(@"test %@",[am.genar objectAtIndex:5]);
        lb6.text=[am.genar objectAtIndex:5]; 
       // NSLog(@"test %@",[am.genar objectAtIndex:6]);
       // lb7.text=[am.genar objectAtIndex:6]; 
       // NSLog(@"test %@",[am.genar objectAtIndex:7]);
       // lb8.text=[am.genar objectAtIndex:7];
    
    [super viewDidLoad];

现在我正在使用这个逻辑来显示 texfield 和标签,但是如果用户选择 5 行并且它正在工作 6 行,它会显示错误。有什么可以帮我清除的吗?

【问题讨论】:

@venkat 我添加了编码请帮我清除 在您将值添加到 am.genar 之后尝试打印这些值。如果是,则表示它是什么样的??? @dhanush 我从 A-Live 得到了答案,非常感谢 【参考方案1】:

根据您的应用程序设计,在第二个视图控制器中使用表格视图可能很有意义,这样可以轻松创建所需数量的行并正确显示标题。

如果您需要使用插座标签和文本字段,我会这样做

NSArray * arrayOfLabelsAndTextViews = [NSArray arrayWithObjects:lb1, text1, lb2, text2, lb3, text3, lb4, text4, lb5, text5, lx6, text6, lb7, text7, lb8, text8, nil];

借助这个数组,您可以快速枚举访问它的所有标签/文本对:

i - 对索引

i*2 - 标签索引

i*2 +1 - 文本索引

然后你需要在previos视图中准确显示检查的对数:

am=(AppDelegate*)[[UIApplication sharedApplication] delegate];

const int totalPairsCount = 8;
for(int i = 0; i<totalPairsCount; i++) 

   UILabel * pairLabel =   [arrayOfLabelsAndTextViews objectAtIndex:i*2];
   UITextView * pairText = [arrayOfLabelsAndTextViews objectAtIndex:i*2 +1];
   BOOL isPairVisible = i < am.count;
   if (isPairVisible) 
      pairLabel.text = [am objectAtIndex:i];
      pairText.text = @"";
   
   pairLabel.hidden = !isPairVisible;
   pairText.hidden = !isPairVisible;

我不认为这是生产质量代码,但在列表中它必须帮助您了解如何操作数据和使用 UI 元素。

【讨论】:

非常感谢......这正是我想要的......它的工作......谢谢队友【参考方案2】:

不要这样编码..,

int s=[am.genar count];
 am=(AppDelegate*)[[UIApplication sharedApplication] delegate];

在声明 AppDelegate 变量后添加 S 值,

 am=(AppDelegate*)[[UIApplication sharedApplication] delegate];
  int s=[am.genar count];

并尝试打印值。,.

【讨论】:

【参考方案3】:

单击复选标记将该特定字符串添加到全局数组。从中您可以获得全局数组计数 在第二个视图中

查看是否加载方法 创建一个for循环

(int i =0 ; i < appDelegate.globalArray; i++)

  Here you can create a label Dynamically whatever number will be. your labels will create according to that

如果您有任何问题,请随时提出

【讨论】:

这没有意义,如果他有数组,他就有检查元素的计数,如果他没有数组,那么唯一检查的项目计数是无用的,因为检查顺序是随机的。跨度>

以上是关于uitextfield 和 uilabel 取决于复选标记的主要内容,如果未能解决你的问题,请参考以下文章

如何制作字幕 UILabel / UITextField / NSTextField

如何比较 Swift 中的字符?我有带有文本和 UITextField 的 UILabel

在 UILabel 和 UITextField 中切断第一个而不是最后一个字母?

从 json 获取数据后将数据加载到 UILabels 和 UITextFields

UIAlertController 或 UITextField 中的 UILabel 类似 UILabel

无法将UITextField中的值作为子视图返回到UITableViewCell中的UILabel