2013-10-03 65 views
0

我有一個簡單的TableView,當選中單元格時,我希望內容被傳遞到詳細視圖中的多個字段,以便可以在表格中更改和保存它們。從單元格中設置UITextField

我的代碼沒有問題,沒有錯誤,當我調試時,完全設置所有變量,但我的字段保持空白。我嘗試用數組,我嘗試了字符串,沒有治療。

我正在從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]; 
} 

當我調試的變量名1,USERNAME1等被設置爲正確的數據,但該領域nameText.text仍然是零。

+0

你是否用XIB恰當地映射你的UITextField ....?我想你忘了這件事。 –

+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

謝謝Bhavik,但足夠悲傷的結果是一樣的,在領域沒有數據。 – Irene

+0

如何可以在該領域的數據,因爲你永遠不會導航到該視圖,顯示您的領域。 –