所以我有一个弹出表视图,显示3个名字。我想要的是当用户从弹出表中选择一个名称时,它将关闭弹出窗口并在原始视图控制器的标签或文本字段上显示该名称。以下是我到目前为止的情况:
(selectedName是我在原始viewcontroller上的标签名称)
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
selectedName.text = cell.textLabel.text;
}
它不起作用,我也在寻找一种方法让弹出窗口在单击一个单元格时消失。有什么想法吗?
编辑:(设置单元格标签文本的代码)
cell.textLabel.text = [[myArray objectAtIndex:indexPath.row] objectForKey:@"Name"];
答案 0 :(得分:1)
您可以做的是定义一个协议,您的tableview可以使用该协议与演示者进行通信。这是一种常见的做法。
这是一个粗略的例子:
@protocol MyTableViewDelegate<NSObject>
-(void)myTableView:(TheTableViewClass *)tableView didSelectValue:(NSString *)value;
@end
@interface TheTableViewClass : UITableViewController
@property (nonatomic, assign) id<MyTableViewDelegate> d;
@end
@implementation TheTableViewClass
@synthesize d;
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[self.d myTableView:self didSelectValue:cell.textLabel.text];
}
@end
@implementation MyPresenter
-(void)present
{
self.myTableViewClass = [MyTableViewClass ....];
self.myTableViewClass.d = self;
//present myTableViewClass...
}
-(void)myTableView:(TheTableViewClass *)tableView didSelectValue:(NSString *)value
{
//Set some label to the value passed in
//Dismiss self.myTablViewClass
}
@end
一些额外的阅读:Working with Protocols