1

所以我有一个显示 3 个名称的弹出表视图。我想要得到的是,当用户从弹出表中选择一个名称时,它将关闭弹出窗口并将该名称显示在原始视图控制器的标签或文本字段上。这是我到目前为止所拥有的:

(selectedName 是我在原始视图控制器上的标签名称)

- (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"];
4

1 回答 1

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

一些附加阅读:使用协议

于 2013-02-08T19:05:37.477 回答