2013-05-18 41 views
0

我有一個UITableView和另一個視圖。另一個視圖有一個UITextView,我想用不同的文本填充,這取決於表視圖中的哪一行被選中。我知道如何爲所有不同的文本選項創建不同的視圖。如果我這樣做了,我可以在該行被點擊時打開該視圖。我只是想避免創建一堆不同的視圖,只是使用不同的文本加載不同的文本,具體取決於表視圖中的行。我想我只需要知道具有文本視圖的視圖如何從表視圖訪問indexPath.row。有什麼建議麼?當UITableView行被選中時用特定信息填充UITextView

編輯:這是我的代碼。

LHRRoster.m

#import "LHRRoster.h" 
#import "CustomCellBackground.h" 
#import "OnMyHonor.h" 
#import "AVA.h" 
#import "Receivers.h" 
#import "BandDetailView.h" 

@interface LHRRoster() 

@end 

@implementation LHRRoster 
{ 
    NSMutableArray *mbTableData; 
} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    mbTableData = [NSMutableArray arrayWithObjects:@"Aesthetics Versus Architecture", @"On My Honor", @"Receivers", @"Skyscraper Stereo", @"California", @"Late Ones", @"Uh-Huh Baby Yeah", @"Danielle Bouchard", @"Chris Karrer", @"Joey Blue", @"The Codas", @"Your Favorite Hero", @"Nixon", @"Skam Impaired", @" SaySomethingHugeOnFire", @"Adore Me Not", @"Common Collective", @"The Royal Tees", @"The Gravetones", @"Bush League", @"Rock & Roll Television", @" Tastyface", @"The Lips", @"Mercy Academy", @"Audiostrobelight", nil]; 

    self.title = @"LHR Roster"; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [mbTableData count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *mbTableIdentifier = @"SimpleTableItem"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:mbTableIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:mbTableIdentifier]; 
     cell.textLabel.font=[UIFont systemFontOfSize:14.0]; 
    } 

    cell.backgroundView = [[CustomCellBackground alloc] init]; 
    cell.selectedBackgroundView = [[CustomCellBackground alloc] init]; 
    cell.textLabel.backgroundColor = [UIColor clearColor]; 
    cell.textLabel.highlightedTextColor = [UIColor darkGrayColor]; 

    cell.textLabel.text = [mbTableData objectAtIndex:indexPath.row]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BandDetailView *detailView = [[BandDetailView alloc]initWithNibName:@"BandDetailView" bundle:nil]; 

    if (indexPath.row == 0) 
    { 
     detailView.title = @"Aesthetics vs Architecture"; 
     UIImage *image = [UIImage imageNamed: @"AVA.png"]; 
     [detailView.bandPic setImage:image]; 
     NSString *bio = @""; 
     [detailView.bandInfo setText:bio]; 
     [self.navigationController pushViewController:detailView animated:YES]; 
    } 
} 

@end 
+0

看一看[本教程(http://www.iphonesdkarticles.com/2009/01/uitableview-loading-detail-view.html)和修改,以滿足您的需要的代碼。 – Greg

回答

1

你所得到的選定單元格的對象,只是傳遞對象TextView的,它會動態加載要注意所選單元格data.An重要的事情,先推視圖控制器然後將數據傳遞到controller.In你的代碼中有通過數據第一,然後推視圖控制器,這並不工作

0

MVC - 模型,視圖控制器。您的數據是模型。表視圖和文本視圖是視圖。你的UIViewController是控制器。它完成所有的工作。

實現在控制器中,這是表視圖的代表didSelectRowAtIndexPath。現在你知道表中的一排被選中了,你知道其中是它的排。因此,將所需的文本從模型中拉出並粘貼到UITextView中。

0

展開您的didSelectRowAtIndexPath方法也修改您的UITextView。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    **myUiTextView.text = somethingBasedOnTheRowSelected[indexPath.row];** <-- new code here 


    // followed by your existing code 
} 
0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     BandDetailView *detailView = [[BandDetailView alloc]initWithNibName:@"BandDetailView" bundle:nil]; 

    if (indexPath.row == 0) 
    { 
     detailView.title = @"Aesthetics vs Architecture"; 
     UIImage *image = [UIImage imageNamed: @"AVA.png"]; 
     [detailView.bandPic setImage:image]; 
     NSString *bio = @""; 
     [detailView.bandInfo setText:bio]; 
     [self.navigationController pushViewController:detailView animated:YES]; 
    } 
    **myUiTextView.text =[yourarray indexPath.row]; 
} 

關注該代碼的代碼可以幫助你。

0

只需添加你的代碼是

 yourtextfieldname.text=[yourarrayname objectAtIndex:indexpath.row]; 

,讓你選擇的行文本字段的數據在你的文本字段。

我希望這段代碼對你有用。