我用UITextField和UITableView創建了一個下拉列表。當用戶選擇一個文本字段時,一個tableview會顯示爲一個下拉菜單。我已經在另一個類中設置了tableview委託和數據源。IOS下拉用UITextField和UITableView
現在我的問題是我想要在tableview中的選定行的文本到文本字段即我想發送tableview行文本回視圖控制器(其中包括文本框)當用戶選擇表中的一行。
在此先感謝。
我用UITextField和UITableView創建了一個下拉列表。當用戶選擇一個文本字段時,一個tableview會顯示爲一個下拉菜單。我已經在另一個類中設置了tableview委託和數據源。IOS下拉用UITextField和UITableView
現在我的問題是我想要在tableview中的選定行的文本到文本字段即我想發送tableview行文本回視圖控制器(其中包括文本框)當用戶選擇表中的一行。
在此先感謝。
在視圖中添加以下代碼沒有在您添加的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];
或者它的替代方案是您可以使用自定義代表
我明白了。感謝你的回答。 – pradeep
使用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,但這種方式更加正確。
對不起,我醜陋的英語。
你爲什麼不自己創建一個委託? – Amar
你的意思,而不是tableview委託創建其他自定義委託? – pradeep
否否,創建一個單獨的委託,將選定的行文本傳遞迴包含文本字段的VC。 – Amar