2013-04-16 49 views
0

好吧,所以我需要索姆幫助。我的代碼幾乎完成了我想要的工作,但是我認爲存在一個小問題。我有一個表格視圖,它從.plist文件獲取其信息,我的代碼將它放在表格視圖中。現在,我想要的是,當我按下表格視圖單元格時,我想要四個不同的標籤更改爲我已在代碼中加入的東西。我得到這個工作,但只在第一部分(我有部分A - B)。當我在第二部分中按下第一個表格視圖單元格時,我得到了與第一部分中第一個單元格相同的標籤值。任何想法如何得到這個工作?如何按下某個節中的特殊表格視圖單元格時更改多個標籤中的文本?

她是我的看法或者Controller.h:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> 

@property (copy, nonatomic) NSDictionary *firstTableView; 
@property (copy, nonatomic) NSArray *firstTableViewKey; 

@property (weak, nonatomic) IBOutlet UILabel *norskLabel; 
@property (weak, nonatomic) IBOutlet UILabel *infinitivLabel; 
@property (weak, nonatomic) IBOutlet UILabel *presensLabel; 
@property (weak, nonatomic) IBOutlet UILabel *preteritumLabel; 
@property (weak, nonatomic) IBOutlet UILabel *perfektumLabel; 


@end 

這裏是我的viewcontroller.m:

#import "ViewController.h" 


static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier"; 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITableView *tableView = (id)[self.view viewWithTag:1]; 
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:SectionsTableIdentifier]; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"SterkeVerb" ofType:@"plist"]; 

    self.firstTableView = [NSDictionary dictionaryWithContentsOfFile:path]; 

    self.firstTableViewKey = [[self.firstTableView allKeys] sortedArrayUsingSelector:@selector(compare:)]; 

    tableView.backgroundColor = [UIColor clearColor]; 
    tableView.opaque = NO; 
    tableView.backgroundView = nil; 


} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 

} 
#pragma mark - 
#pragma mark Table View Data Source Methods 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
return [self.firstTableViewKey count]; 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
NSString *key = self.firstTableViewKey[section]; 
NSArray *nameSection = self.firstTableView[key]; 
return [nameSection count]; 

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ 
    return self.firstTableViewKey[section]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SectionsTableIdentifier]; 

    NSString *key = self.firstTableViewKey[indexPath.section]; 
    NSArray *nameSection = self.firstTableView[key]; 

    cell.textLabel.text = nameSection[indexPath.row]; 
    return cell; 

} 

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


    if (indexPath.row == 0){ 

     _norskLabel.text = @"å bake"; 
     _infinitivLabel.text = @"zu backen"; 
     _presensLabel.text = @"bäckt/backt"; 
     _preteritumLabel.text = @"backte"; 
     _perfektumLabel.text = @"hat gebacken"; 

} 

    else if (indexPath.row == 1){ 

     _norskLabel.text = @"å motta"; 
     _infinitivLabel.text = @"zu empfangen"; 
     _presensLabel.text = @"empfängt"; 
     _preteritumLabel.text = @"empfing"; 
     _perfektumLabel.text = @"hat empfangen"; 
    } 
} 

我有幾個否則,如果是把代碼,但是這將是一個長名單。如果你能告訴我如何在B部分放置第一個「if」和在E部分放置「else if」。也許如何在另一部分獲得別的東西,那會很棒!

感謝您的幫助!

+1

在tableview中使用indexPath.section來區分不同部分。 – Balu

+0

是的,您沒有像indexPath.row那樣對該部分進行任何檢查。 使用indexPath.row和indexPath.section來區分各節之間的各行。 –

+0

如何添加?我只寫:「else if(indexPath.section == 1,indexPath.row == 1)? –

回答

3

正如我在前面提到的評論這裏是代碼snipeet顯示如何完成檢查部分。 默認情況下,它適用於部分0.不適用於其他部分。

下面的代碼:

- (空)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath {

if (indexPath.section == 0) { 

    if (indexPath.row == 0) 
    { 
     _norskLabel.text = @"å bake"; 
     _infinitivLabel.text = @"zu backen"; 
     _presensLabel.text = @"bäckt/backt"; 
     _preteritumLabel.text = @"backte"; 
     _perfektumLabel.text = @"hat gebacken"; 

    } 

    else if (indexPath.row == 1){ 

     _norskLabel.text = @"å motta"; 
     _infinitivLabel.text = @"zu empfangen"; 
     _presensLabel.text = @"empfängt"; 
     _preteritumLabel.text = @"empfing"; 
     _perfektumLabel.text = @"hat empfangen"; 
    } 

} 

else if (indexPath.section == 1){ 

    if (indexPath.row == 0){ 

     _norskLabel.text = @"å bake"; 
     _infinitivLabel.text = @"zu backen"; 
     _presensLabel.text = @"bäckt/backt"; 
     _preteritumLabel.text = @"backte"; 
     _perfektumLabel.text = @"hat gebacken"; 

    } 

    else if (indexPath.row == 1){ 

     _norskLabel.text = @"å motta"; 
     _infinitivLabel.text = @"zu empfangen"; 
     _presensLabel.text = @"empfängt"; 
     _preteritumLabel.text = @"empfing"; 
     _perfektumLabel.text = @"hat empfangen"; 
    } 

} 

}

查找到這個,讓我們知道你是否仍然有任何問題。

Thinks :)

+0

這工作,謝謝! –

相關問題