【问题标题】:Assigning Text to Labels Dynamically将文本动态分配给标签
【发布时间】:2015-05-02 11:35:20
【问题描述】:

我让用户通过文本字段输入文本,然后将其显示在单独的 ViewController 中的标签中。

基本上我需要做的是

1 - 让用户输入文本

2 - 第二个 ViewController 创建文本并将其分配给标签

我需要用户输入多个数据条目,因此需要在用户输入数据时动态创建标签。

我正在使用委托通过 ViewControllers 传递我的数据。

感谢您的帮助!

【问题讨论】:

  • 您想创建并将文本分配给其他视图控制器的标签?
  • 让您的 firstViewController 将数据传递给 prepareForSegue 中的 secondViewController,然后设置所需标签的 text 属性。
  • 我能够将数据传递到单独的 ViewController 并显示它,但我想从同一个文本字段中输入多个数据条目,并以用户身份在单独的 ViewController 中为每个条目创建一个标签创建它。
  • 请从用户驱动的角度更详细地解释您的结构以及您想要实现的目标。

标签: ios objective-c uilabel


【解决方案1】:

为什么不考虑NSUserDefaults?它甚至可以跨会话传递数据。

传递数据:


- (IBAction)saveLabel:(id)sender {
    NSArray *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"DATA"];
    NSMutableArray *currentDataArray;
    if (data == nil) {
        currentDataArray = [[NSMutableArray alloc]init];
    } else {
        currentDataArray = [[NSMutableArray alloc]initWithArray:data];
    }
    [currentDataArray addObject:self.textField.text];
    [[NSUserDefaults standardUserDefaults] setObject:currentDataArray forKey:@"DATA"];
}

处理数据:(在另一个视图控制器中)


- (void) viewWillAppear:(BOOL)animated {
    NSArray *dataArray = [[NSUserDefaults standardUserDefaults]objectForKey:@"DATA"];
    if (dataArray != nil) {
        int count = 0;
        for (NSString *text in dataArray) {
            UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 200 + 40 * count, self.view.frame.size.width, 40)];
            label.text = text;
            [self.view addSubview:label];
            count++;
        }
    }
}

演示可以在https://github.com/null09264/Demo-Stack找到

【讨论】:

    【解决方案2】:

    ViewController1

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Pass duration and time of day through to dataHistory
        if ([[segue identifier] isEqualToString:@"dataViewSegue"])
        {
            dataHistory *dataHistory = [segue destinationViewController];
            dataHistory.duration = self.durationTextField.text;
            dataHistory.timeOfDay = self.userChoice;
        }
    }
    

    ViewController2

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        if ([durationLabel.text  isEqual: @""])
        {
            [durationLabel setHidden:YES];
            [timeOfDayLabel setHidden:YES];
            [editButton setHidden:YES];
        }
        self.durationLabel.text = [self.duration description];
        self.timeOfDayLabel.text = [self.timeOfDay description];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多