繁体   English   中英

如何在我以前的控制器的详细文本标签中显示tableview单元格的多个选择值

[英]How to display the multiple select values of tableview cell in the detail text label of my previous controller

我有一个应用程序,其中有2个tableview控制器。 在第二个tableview控制器中,我创建了一个数组,其中包含7个值并显示在tableview单元格中。 在此表视图单元格中,可以选择多行。 但是我有一个问题。 tableview单元格的多个选定值应显示在我的第一个tableview控制器上。 这怎么可能?

这是我的第二个控制器类:

- (void)viewDidLoad {
    daysarray =[[NSMutableArray alloc]initWithObjects:@"Every Monday",@"Every Tuesday",@"Every Wednesday",@"Every Thursday",@"Every Friday",@"Every Saturday",@"Every Sunday",nil];
    temp = [[NSDictionary alloc] initWithObjectsAndKeys:daysarray,@"arrValue",nil];
    arrayValues = [[NSMutableArray alloc] initWithObjects:@"Every Monday",@"Every Tuesday",@"Every Wednesday",@"Every Thursday",@"Every Friday",@"Every Saturday",nil];
    self.daysarray = arrayValues;
    [arrayValues release];
    [super viewDidLoad];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [arrayValues count];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.textLabel.text = [daysarray objectAtIndex:indexPath.row];
    cell.accessoryType = ([indexPath isEqual:rowselection]) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;

    // Configure the cell...

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     self.rowselection = indexPath;
    NSUInteger row = [indexPath row];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if ([[tableView cellForRowAtIndexPath:indexPath ] accessoryType] == UITableViewCellAccessoryCheckmark)
    {
        [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryNone];
        [daysarray replaceObjectAtIndex:row withObject:@"0"];
    }
    else
    {
        [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];
        [daysarray replaceObjectAtIndex:row withObject:@"1"];
    }
}

在此类中,可以在表视图中选择多行。 但是现在我想根据条件在第一个控制器的详细文本标签中显示选定的值。

也就是说,如果用户选择(每个星期一,每个星期二,每个星期三,每个星期四,每个星期五,每个星期六,每个星期日),则在详细信息文本中应显示“每天”。 如果用户选择(每个星期一,每个星期二,每个星期三,每个星期四,每个星期五),则它应该在详细信息文本中显示“每个工作日”。 如果用户选择每个星期六和每个星期日,则应显示“每个周末”。 如果用户选择任何随机文本,则应显示该特定文本,例如,如果用户选择(每个星期一,每个星期三,每个星期五),则应显示“每个星期一,星期三,星期五”。这怎么可能。

如果从第一个viewcontroller创建第二个视图控制器,则可以将第一个视图控制器指定为第一个视图控制器的委托。 在第一个视图控制器中实现委托方法,然后在第二个中声明协议。 选择完成后,使用选定的值调用委托方法。

SecondViewController.h应该类似于:

@protocol SecondViewControllerDelegate;

@interface SecondViewController
{
id <SecondViewControllerDelegate>delegate;
} 
@property (nonatomic, assign) id <SecondViewControllerDelegate>delegate;


@protocol SecondViewControllerDelegate

- (void) tableViewselected:(NSString *)value1 and:(NSString *)value2;
@end

SecondViewController.m应该具有:

@synthesize delegate;

一旦选择了行,请调用[delegate tableViewselected:value1 and:value2];

现在您必须实现tableViewselected:(NSString *)value1 and:(NSString *)value2; 在FirstViewController中进行处理。

我想你明白我的意思。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM