我有一个简单的TableView,当选择单元格时,我希望将内容传递到详细视图中的多个字段,以便可以在表格中更改和保存它们。
我的代码没有问题,没有错误,当我调试时,完美地设置所有变量,但我的字段仍为空。我尝试使用数组,我尝试使用字符串,无法治愈。
我正在使用来自Java的Objective-C开始我的第一步可以请任何人吗?
这是我的代码:
在我的TableViewController.m中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
SNMGps *selectedCell = [arrayOfCell objectAtIndex:indexPath.row];
NSLog(@"%d - '%@ - '%@'- '%@'- '%@'", selectedCell.gpsID, selectedCell.name,selectedCell.userName,selectedCell.psw, selectedCell.notes);
SNMAddViewController *field = [[SNMAddViewController alloc]init];
//[field setGpsID1:selectedCell.gpsID];
[field setName1:selectedCell.name];
[field setUserName1:selectedCell.userName];
[field setPsw1:selectedCell.psw];
[field setNotes1:selectedCell.notes];
[field setFields];
}
NSLOG显示完美的数据。
在我的DetailViewController.h
中#import <UIKit/UIKit.h>
#import "sqlite3.h"
#import "SNMGps.h"
@interface SNMAddViewController : UIViewController
@property(strong, nonatomic) NSString *name1;
@property(strong, nonatomic) NSString *userName1;
@property(strong, nonatomic) NSString *psw1;
@property(strong, nonatomic) NSString *notes1;
//@property(strong, nonatomic) NSString *gpsID1;
@property (strong, nonatomic) IBOutlet UITextField *nameText;
@property (strong, nonatomic) IBOutlet UITextField *userNameText;
@property (strong, nonatomic) IBOutlet UITextField *pswText;
@property (strong, nonatomic) IBOutlet UITextField *notesText;
- (IBAction)saveEntry:(id)sender;
- (void) setFields;
@end
在我的DetailViewController.m
中#import "SNMAddViewController.h"
@interface SNMAddViewController ()
@end
@implementation SNMAddViewController
//@synthesize nameText, userNameText, pswText, notesText, g;
NSMutableArray *arrayOfCell;
NSString *dbPathString;
sqlite3 *gpsDB;
@synthesize name1, userName1, psw1, notes1;
@synthesize nameText, userNameText, pswText, notesText;
- (void) setFields
{
nameText.text = [NSString stringWithFormat:@"%@",name1];
userNameText.text = [NSString stringWithFormat:@"%@",userName1];
pswText.text = [NSString stringWithFormat:@"%@",psw1];
notesText.text = [NSString stringWithFormat:@"%@",notes1];
}
当我调试变量name1时,userName1等设置为正确的数据,但字段nameText.text仍为零。
答案 0 :(得分:0)
而不是设置变量只是传递方法中的争论,然后按如下方式分配
所以在DetailViewController.h文件中更改你的setFields Metthod如下:
- (void) setFields:(NSString *)name :(NSString *)userName :(NSString *)psw :(NSString *)notes;
并在DetailViewController.m文件中更改方法,如下所示
- (void) setFields:(NSString *)name1 :(NSString *)userName1 :(NSString *)psw1 :(NSString *)notes1
{
nameText.text = [NSString stringWithFormat:@"%@",name1];
userNameText.text = [NSString stringWithFormat:@"%@",userName1];
pswText.text = [NSString stringWithFormat:@"%@",psw1];
notesText.text = [NSString stringWithFormat:@"%@",notes1];
}
并从TableViewController.m中用
调用它[field setFields:selectedCell.name :selectedCell.userName :selectedCell.psw :selectedCell.notes];
尝试这个,让我知道它是否有用。
NOTE:
Most important thing is that you never navigate to the SNMAddViewController.. so please navigate to it as per your need