【问题标题】:Model View Controller with UITextFieldDelegate issue具有 UITextFieldDelegate 问题的模型视图控制器
【发布时间】:2012-11-08 07:10:37
【问题描述】:

我正在处理一些非常简单的事情,我认为我犯了一个小错误,我可能只是在这里没有看到。我在我的 MVC 之间进行了此操作,以简单地将名称从 AddViewController 转移到 MasterViewController,并将其添加到 MasterControllerUITableView。虽然,我已经“NSLogged”了整个过程的每一步,而我基本上从中得到的是输入到“名称”UITextField 中的文本并没有传递到我的NSString方法,_aname

此外,在某一时刻,这可以正常工作,我在将名称从 AddViewController 设置为 MasterViewController 时遇到了麻烦。所以,如果有人也可以看看那部分并确保我已经正确设置了所有内容,我将不胜感激。

简而言之,它看起来像这样。

MasterViewController.h

@property (nonatomic, strong) AddViewController *addViewController;

MasterViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [self.Name setName:name];
    NSLog(@"%@", cell.textLabel.text);

    return cell;

名称.h

- (NSString *)setName:(NSString *)name;

名字.m

- (NSString *)setName:(NSString *)name
{
    [_nameStack addObject:name];

    NSLog(@"Name set to: %@", name);

    return name;
}

AddViewController.m

- (void)viewDidLoad
{

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finalizeAdditionOfName:)];

    NSUserDefaults *nameDefault = [NSUserDefaults standardUserDefaults];
    nameInput.text = [nameDefault objectForKey:@"Name"];
}

- (IBAction)finalizeAdditionOfName:(id)sender
{
    _name = [[Name alloc] init]
    nameInput.text = _name;
    [_name setName:_aname];
    NSLog(@"Name set to (AddViewController): %@", _aname);
    [self dismissViewControllerAnimated:YES completion:NULL];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([indexPath section] == 0) { // Section 1
        if ([indexPath row] == 0) {
            nameInput.delegate = self;
            [nameInput setEnabled: YES];
            [cell addSubview:nameInput];
            [nameInput becomeFirstResponder]
            nameInput.text = _aname;
            NSUserDefaults *nameDefault = [NSUserDefaults standardUserDefaults];
            [nameDefault setObject:_aname forKey:@"Name"];
    }
}

【问题讨论】:

  • 你真的应该在你的命名上下功夫。因为你所有的变量都被命名为“_aname”、“nameDefault”等,所以很难阅读。我对发生了什么感到困惑,但我注意到您的代码中没有任何地方可以访问UITextFieldtext 属性。在finalizeAdditionOfName: 方法中,大概你应该访问文本:NSString *input = nameInput.text // 然后用input 做一些事情
  • 我很抱歉。它们实际上是描述性地命名的,但我觉得我需要发布不必要的代码,所以我重命名了它。我会试一试,让你知道

标签: iphone objective-c ios xcode


【解决方案1】:

如果我的评论没有帮助,我制作了一个示例项目,我认为该项目展示了您如何将数据从文本字段获取到表格视图。如果您对此有任何疑问,请告诉我:

https://github.com/MaxGabriel/TextField-TableView-Example

【讨论】:

  • 这对我帮助很大。我一直很难确定代表和协议。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多