问题描述
如题,继续小白学Ob-c,先谢各位大大!想要把textfield中输入的变量存储在table中,附上代码:在HWviewcontroller中的:’’’
import 'HWViewController.h'import 'HWTableViewController.h'@interface HWViewController ()@property (nonatomic, strong) HWTableViewController *myTableViewController;
@property (strong, nonatomic) IBOutlet UISegmentedControl *mySegmentedControl;
@property (strong, nonatomic) IBOutlet UITextField *main;@property (strong, nonatomic) IBOutlet UITextField *detail;@property (strong, nonatomic) IBOutlet UIButton *addButton;@property (strong, nonatomic) IBOutlet UIButton *showButton;@property (strong, nonatomic) NSMutableDictionary *myItem;@property (strong, nonatomic) NSString *combinedWord;@end
@implementation HWViewController
(void)viewDidLoad{[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.self.main.delegate = self;self.detail.delegate = self;self.myItem = [[NSMutableDictionary alloc] init];self.myTableViewController = [[HWTableViewController alloc] initWithStyle:UITableViewStyleGrouped];self.myTableViewController.view.frame = self.view.bounds;}- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@'return button pressed');[self.main resignFirstResponder];[self.detail resignFirstResponder];return YES;
}-(IBAction)addPressed:(id)sender { NSString *item=self.main.text; NSString *detail=self.detail.text; NSString *combine=[NSString stringWithFormat:@'%@%@',item,detail]; self.combinedWord=combine; NSMutableArray *myWordArray = [[NSMutableArray alloc] init]; [myWordArray addObject:item]; [myWordArray addObject:detail]; [self.myItem setObject:myWordArray forKey:combine];
}-(IBAction)showPressed:(id)sender { UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.myTableViewController];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@'Return' style:UIBarButtonItemStyleDone target:self action:@selector(dismissModalViewControllerAnimated:)];[self.myTableViewController.navigationItem setLeftBarButtonItem:doneButton];[self presentViewController:navController animated:YES completion:nil];
}
(void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}’’’
然后tableviewcontroller的:’’’
import 'HWTableViewController.h'@interface HWTableViewController ()
@end
@implementation HWTableViewController
(id)initWithStyle:(UITableViewStyle)style{self = [super initWithStyle:style];if (self) { // Custom initialization}return self;}
(void)viewDidLoad{[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
(void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}pragma mark - Table view data source(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// Return the number of sections.return 2;}
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// Return the number of rows in the section.return 2;}
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@'cell'];
if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@'cell'];}
int r = indexPath.row;int s = indexPath.section;//这里是有问题的敌方,貌似不行cell.textLabel.text = 这里想是self.maincell.detailTextLabel.text = 这里像是self.detail
if (r%2 == 0) { cell.backgroundColor = [UIColor redColor];}else{ cell.backgroundColor = [UIColor whiteColor];}
return cell;}
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{int r = indexPath.row;int s = indexPath.section;NSString *string = [NSString stringWithFormat:@'Section %d, Row %d', s, r];NSLog(@'%@', string);
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@'Selection' message:@'You have selected a row!' delegate:self cancelButtonTitle:@'Okay' otherButtonTitles:@'Thatz not okay', nil];
[alertView show];’’’
问题解答
回答1:cell.textLabel.text = 这里想是self.maincell.detailTextLabel.text = 这里像是self.detail这样显然是不行的,因为你的tableview里面根本就没有self.main,self.detail这2个值,这个其实想解决有好几种方式,其中最简单的做法是在tableview中声明2个属性,跳转控制器之前把tableview的2个属性赋值.(记住,tableview有代理和数据源)
退出键盘有一种更方便的方式[self.view endEditing:YES];