【发布时间】:2012-11-08 07:10:37
【问题描述】:
我正在处理一些非常简单的事情,我认为我犯了一个小错误,我可能只是在这里没有看到。我在我的 MVC 之间进行了此操作,以简单地将名称从 AddViewController 转移到 MasterViewController,并将其添加到 MasterController 的 UITableView。虽然,我已经“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”等,所以很难阅读。我对发生了什么感到困惑,但我注意到您的代码中没有任何地方可以访问
UITextField的text属性。在finalizeAdditionOfName:方法中,大概你应该访问文本:NSString *input = nameInput.text// 然后用input做一些事情 -
我很抱歉。它们实际上是描述性地命名的,但我觉得我需要发布不必要的代码,所以我重命名了它。我会试一试,让你知道
标签: iphone objective-c ios xcode