2013-10-03 5 views
0

У меня есть простой TableView, когда ячейка выбрана Я хочу, чтобы содержимое было передано нескольким полям в подробном представлении, чтобы их можно было изменить и сохранить снова в таблице.Установка UITextField из ячейки

В моем коде не было никаких проблем, ошибок нет, и когда я отлаживаю, все переменные отлично, но мое поле остается пустым. Я пытался с массивами, я пытался со струнами, без лечения.

Я делаю свои первые шаги с Objective-C, исходящими от Java, может кто-нибудь похвастаться, пожалуйста?

Вот мой код:

В моей 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

ли вы сопоставляете свой UITextField с XIB propperly ....? Думаю, ты забыл это. –

+1

Кажется, вы выделили представление SNMAddViewController. Но где логика навигации в файле didSelectRowAtIndexPath :? – Xcoder

+0

@Renjith Я не уверен, что вы имеете в виду «Но где логика навигации в файле didSelectRowAtIndexPath :?» Выделение SNMAddViewController находится в файле didSelectRowAtIndexPath. – Irene

ответ

0

Вместо того, установить переменную просто передать arguement в методе, а затем назначить его следующим образом

так в 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 
+0

Спасибо, Бхавик, но печально, результат тот же, никаких данных в полях. – Irene

+0

Как могут быть данные в поле, потому что вы никогда не переходите к тому виду, которое показывает вам поле. –

Смежные вопросы