提问



我有两个UITableview,如果我在每个表中选择一行,那个特定行的textLabel.text应该显示在一个UIAlertview中。


如何组合两个表的textLabel.text并在一个UIAlertView中显示


任何人都可以让我知道我该怎么做


EX:一个表视图,显示A,B,C,D和另外一个显示1,2,3,4的tableView。
这两个表来自不同的类。现在假设如果我按表1中的一行,我将获得textLabel.text为A,如果我按表2,我将在视图上获得textLabel.text为1如果表1中的选择A和表2中的1我应该得到一个AlertView显示消息为A1


代码参考:


viewController.h


#import <UIKit/UIKit.h>
#import "FirstTVContoller.h"
#import "SecondTVController.h"

@interface TwoTableViewsViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>{
    FirstTVContoller *firstController;
    SecondTVController *secondController;
    IBOutlet UITableView *firstTable;
    IBOutlet UITableView *secondTable;
    NSString *stringTable1;
    NSString *stringTable2;
    NSArray * myArray1;
    NSArray * myArray2;
}
@property (nonatomic, retain)  NSString *stringTable1;
@property (nonatomic, retain)  NSString *stringTable2;
@property (nonatomic, retain)  NSArray * myArray1;
@property (nonatomic, retain)   NSArray * myArray2;

@end


.M:


    #import "TwoTableViewsViewController.h"

    @implementation TwoTableViewsViewController

    @synthesize stringTable1 = stringTable1; 
    @synthesize stringTable2 = stringTable2;
    @synthesize  myArray1,myArray2;

    - (void)viewDidLoad {
        [super viewDidLoad];
        if (firstController == nil) {
            firstController = [**FirstTVContoller alloc] init];
        }
        if (secondController == nil) {
            secondController = [**SecondTVController alloc] init];
        }
        [firstTable setDataSource:firstController];
        [secondTable setDataSource:secondController];

        [firstTable setDelegate:firstController];
        [secondTable setDelegate:secondController];
        firstController.view = firstController.tableView;
        secondController.view = secondController.tableView;
    }

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        if (tableView == firstTable) {
         self.stringTable1  = [myArray1 objectAtIndex: indexPath.row];
            //call uiAlert, and place the stringTable1 on your message

        if (tableView == secondTable) {
            self.stringTable2  = [myArray2 objectAtIndex: indexPath.row];   
            //call uiAlert, and place the stringTable2 on your message
            UIAlertView *alert = [**UIAlertView alloc] initWithTitle:@"hi" message:[NSString stringWithFormat:@"%@ %@", self.stringTable1, self.stringTable2] delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];    
            [alert show];     
            [alert release];

        }}

}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

}   

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [firstController release];
    [secondController release];
    [firstTable release];
    [secondTable release];
    [stringTable1 release];
    [stringTable2 release];
    [super dealloc];
}

@end


表格1:


#import <Foundation/Foundation.h>


@interface FirstTVContoller : UITableViewController <UITableViewDataSource, UITableViewDelegate>{
    NSMutableArray *items;
}

@end


#import "FirstTVContoller.h"
#import "SecondTVController.h"

@implementation FirstTVContoller



-(void) loadView
{
    if (items == nil) {
        items = [**NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"6",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",nil] retain];
    }
}

-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
    return [items count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
    if (cell == nil) {
        cell = [**UITableViewCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:@"MyIdentifier"];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"1.%@" ,[items objectAtIndex:indexPath.row**];
    return cell;
}

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *stringVariable = cell.textLabel.text;
    NSLog(@"%@",stringVariable);
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

        return UITableViewCellEditingStyleDelete;

}
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {

    if(editingStyle == UITableViewCellEditingStyleDelete) {     
        //Delete the object from the table.
        [items removeObjectAtIndex:indexPath.row];
        [tv deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

-(void) dealloc
{
    [items release];
    [super dealloc];
}

@end


表2:


#import <Foundation/Foundation.h>

@interface SecondTVController : UITableViewController <UITableViewDataSource, UITableViewDelegate>{
    int numberOfCells;
}
@end

#import "SecondTVController.h"


@implementation SecondTVController


-(void) viewDidLoad
{
    numberOfCells = 20;
}
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
    return numberOfCells;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
    if (cell == nil) {
        cell = [**UITableViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"MyIdentifier"];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"2.%d",  indexPath.row];

    return cell;
}

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *stringVariable = cell.textLabel.text;
    NSLog(@"%@",stringVariable);

}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewCellEditingStyleDelete;

}
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {

    if(editingStyle == UITableViewCellEditingStyleDelete) {     
        //Delete the object from the table.
        numberOfCells -=1;
        [tv deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
    }
}

@end


请建议

最佳参考


当你想要显示alertView时,我不清楚,
但这会对你有所帮助


您需要有一个属性来放置标签的文本


你的.h


@ interface MyViewController :UIViewController {
 NSString *_stringTable1;
    NSString *_stringTable2;
}

@property (nonatomic, retain)  NSString *stringTable1;
@property (nonatomic, retain)  NSString *stringTable2;


在你的.m


@synthesize stringTable1 = _stringTable1; 
@synthesize stringTable2 = _stringTable2; 
- (void) dealloc{
[_stringTable1 release];
[_stringTable2 release];
    [super dealloc];
}


所以你的表委托


 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {

    if (tableView == table1) {
    self.stringTable1  = [myArray1 objectAtIndex: indexPath.row];   
    //call uiAlert, and place the stringTable1 on your message
 }
    if (tableView == table2) {
    self.stringTable2  = [myArray2 objectAtIndex: indexPath.row];   
        //call uiAlert, and place the stringTable2 on your message

 }

    }


当你打电话给你的uiAlertView时,你可以向他们展示这样的消息


 [NSString stringWithFormat:@"%@ %@", self.stringTable1, self.stringTable2];

其它参考1


//在第二个表格单元格点击事件的点击中将两个字符串组合在一个字符串中...


//在didSelectRowAtIndexPath方法中使用以下代码...并享受...


NSString *tempstring = [**NSString alloc]init];
   tempstring =yourlable.text;// your cell label...
   if (textField.tag == 1) {

    NSUserDefaults *stringsaver = [NSUserDefaults standardUserDefaults];

    if([stringsaver objectForKey:@"stringsaver"]== nil)
    {
        [stringsaver setObject:tempstring forKey:@"stringsaver"];
    }
    else
    {
        NSString *combinedstring = [stringsaver objectForKey:@"stringsaver"];
       //NSLog(@"==%@",combinedstring);

        UIAlertView *alertdata = [**UIAlertView alloc] 
                                  initWithTitle:@"Your Title" 
                                  message:combinedstring
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
        [alertdata show];
        [alertdata release];

       [stringsaver removeObjectForKey:@"stringsaver"];
    }

其它参考2


尝试这个-


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell * cell1 = [tableView cellForRowAtIndexPath:indexPath];

    // get here the instance of otherTableView.
    UITableViewCell * cell2 = [otherTableView cellForRowAtIndexPath:indexPath];

   UILabel *Title1 = (UILabel *)[cell1 viewWithTag:1]; //for it you need to make the label with Tag 1
   UILabel *Title2 = (UILabel *)[cell2 viewWithTag:1]; //for it you need to make the label with Tag 1 
   NSString * str = [NSString stringWithFormat:@"%@ %@",[Title1 text],[Title2 text**];


  //fire the alert

   UIAlertView *alertdata = [**UIAlertView alloc] 
                              initWithTitle:@"Your Title" 
                              message:str
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
    [alertdata show];

}