0

我使用 UITextField 和 UITableView 创建了一个下拉列表。当用户选择文本字段时,表格视图将显示为下拉列表。我已经在另一个类中设置了 tableview 委托和数据源。

现在我的问题是我想将 tableview 中选定行的文本放到文本字段上,即当用户在 tableview 中选择一行时,我想将 tableview 行文本发送回视图控制器(由文本字段组成)。

提前致谢。

4

2 回答 2

1

使用 UITableView 为控制器创建自定义委托

项目列表 .h 文件

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

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

项目列表 .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]]];
}

.....

在 ViewController 中,您的字段设置在 .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,不过这种方式更正确。

对不起我丑陋的英语。

于 2013-08-07T13:40:20.623 回答
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];

或者替代它是您可以使用自定义委托

于 2013-08-07T13:30:14.617 回答