2012-02-29 60 views
1

所以我需要在保存到nsmutablearray的文本字段中输入任何内容(这必须发生多次!每次必须另存为另一个对象) 。但是无论我明确表达什么都行不通,因为它说“文本”不在结构或联盟中。继承人我的代码。感谢您的任何意见!你如何引用一个文本字段并将其输入到一个可变数组中

问题出在enteredClassText方法中。

#import "EnteringCoursesViewController.h" 
#import "SelectRotationController.h" 


@implementation EnteringCoursesViewController 

@synthesize classField; 
@synthesize indicatedClass; 
@synthesize labelClassTitle; 
@synthesize selectRotationController; 
@synthesize classesEnteredTable; 

- (IBAction)chooseType { 
    UIActionSheet *typeSheet = [[UIActionSheet alloc] 
           initWithTitle:@"Class types" 
           delegate:self 
           cancelButtonTitle:nil 
           destructiveButtonTitle:nil 
           otherButtonTitles:@"Core Class", @"Elective", nil]; 
    [typeSheet showInView:self.view]; 
    [typeSheet release]; 
} 

- (void)actionSheet:(UIActionSheet *)typeSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) { 
     self.indicatedClass = classField.text; 
     NSString *indicatedString = indicatedClass; 
     NSString *greeting = [[NSString alloc] 
           initWithFormat:@"%@ meets 6 times per rotation", indicatedString]; 
     labelClassTitle.text = greeting; 
     labelClassTitle.hidden = NO; 
     [greeting release]; 
     [indicatedClass release]; 
    } 
    else if (buttonIndex == 1) { 
     self.indicatedClass = classField.text; 
     NSString *indicatedString = indicatedClass; 
     NSString *greeting = [[NSString alloc] 
           initWithFormat:@"%@ meets 3 times per rotation", indicatedString]; 
     labelClassTitle.text = greeting; 
     labelClassTitle.hidden = NO; 
     [greeting release]; 
     [indicatedClass release]; 
    } 

} 

- (IBAction)chooseFirstMeeting:(id)sender {  
    SelectRotationController *selectView = [[SelectRotationController alloc] 
               initWithNibName:@"SelectRotationController" 
               bundle:[NSBundle mainBundle]]; 
    [selectView.navigationItem setTitle:@"First Period Day Choose"]; 

    [self.navigationController pushViewController:self.selectRotationController animated:YES]; 
    self.selectRotationController = selectView; 
    [selectView release]; 
} 

- (IBAction)enteredClassText:(id)sender { 
     NSMutableArray *classesEntered = [NSMutableArray arrayWithObject:sender.text]; 
     [classesEntered = [NSMutableArray alloc] init]; 
     [classesEntered release]; 

} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 

} 

- (void)viewDidLoad { 
    self.navigationItem.hidesBackButton = YES; 
    [super viewDidLoad]; 

} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [classField release]; 
    [labelClassTitle release]; 
    [indicatedClass release]; 
    [selectRotationController release]; 
    [classesEnteredTable release]; 
    [super dealloc]; 
} 


@end 

回答

0

当你按下按钮,你应该输入的内容,将其转换为字符串,并保存字符串数组。这应该相当容易完成。下面是一些示例代码:

@interface 

NSMutableArray *theArray; 

@implementation 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 

NSString *theStringToAdd = textField.text; 
[theArray addObject:theStringToAdd]; 

} 

要注意的是我还没有测试此代码!

+0

不应该是:'[theArray addObject:theStringToAdd];'? – 2012-02-29 19:55:55

+0

对不起,代码已被编辑! – wizH 2012-02-29 19:59:20

+0

如果你想关闭键盘,不要忘记[textField resignFirstResponder]。 – 2012-02-29 20:25:21

0

的问题是在这里:

- (IBAction)enteredClassText:(id)sender { 
    NSMutableArray *classesEntered = [NSMutableArray arrayWithObject:sender.text]; 
    [classesEntered = [NSMutableArray alloc] init]; 
    [classesEntered release]; 

}

要解决这个问题,尝试引用它作为

[(UITextField*)sender text] 

所以,你最终的代码应该是这样的:

- (IBAction)enteredClassText:(id)sender { 
    NSMutableArray *classesEntered = [NSMutableArray arrayWithObject:[(UITextField*)sender text]]; 
    [classesEntered = [NSMutableArray alloc] init]; 
    [classesEntered release]; 

}

这告诉程序假定发件人将是一个UITextView。

相关问题