2013-08-07 59 views
0

我用UITextField和UITableView創建了一個下拉列表。當用戶選擇一個文本字段時,一個tableview會顯示爲一個下拉菜單。我已經在另一個類中設置了tableview委託和數據源。IOS下拉用UITextField和UITableView

現在我的問題是我想要在tableview中的選定行的文本到文本字段即我想發送tableview行文本回視圖控制器(其中包括文本框)當用戶選擇表中的一行。

在此先感謝。

+0

你爲什麼不自己創建一個委託? – Amar

+0

你的意思,而不是tableview委託創建其他自定義委託? – pradeep

+0

否否,創建一個單獨的委託,將選定的行文本傳遞迴包含文本字段的VC。 – Amar

回答

1

在視圖中添加以下代碼沒有在您添加的UITextField

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addValueToTextField:) name:@"addValueToTextFiel" object:nil]; 

-(void)addValueToTextField:(NSNotification *) notification{ 
     NSString* text = [notification text]; 

     yourTextField.text = text; 
} 

而在其他類的UITable鑑於Didselect委託類的負載必須添加以下代碼

UITableViewCell *selectedCell =[tableView cellForRowAtIndexPath:indexPath]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"addValueToTextField" object:nil userInfo:selectedCell.Text]; 

或者它的替代方案是您可以使用自定義代表

+0

我明白了。感謝你的回答。 – pradeep

1

使用UITableView爲控制器創建自定義代理

ItemsList .h文件中

@protocol ItemsListDelegate : NSObject 
@optional 
- (void)itemSelected:(int)num withTitle:(NSString *)title; 
@end 

@interface ItemsList : UITableViewController{ 
id <ItemsListDelegate> delegate; 
... 
} 

ItemsList .m文件

#import "ItemsList.h" 

@implementation ItemsList<UITableViewDataSource, UITableViewDelegate> 
@synthesize delegate; 

..... 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
[delegate itemsSelected:[indexPath row] withTitle:[items objectAtIndex:[indexPath row]]]; 
} 

..... 

並在視圖控制器與你的領域中的.h

#import "ItemsList.h" 

@interface ViewWithField<ItemsListDelegate>{ 
ItemsList *itemsList; 
} 

.... 

而且在.m文件設置

..... 

- (void)viewDidLoad 
{ 
    itemList.delegate = self; 
} 

- (void)itemSelected:(int)num withTitle:(NSString *)title{ 
    self.textField.text = title; 
} 
..... 

就像這樣。我不檢查此代碼中的錯誤。但看看這種方式。 或者使用NotificationCenter,但這種方式更加正確。

對不起,我醜陋的英語。