MapMapM 2013-02-18 02:32 采纳率: 0%
浏览 7372
已采纳

DidSelectRowAtIndexPath调用失败

在masterTableView用到三个不同的detailTableViews ,触屏时会调用,但是没有调用成。

master.m文件:

#import "GuideTableViewController.h"
#import "GuideDetailTableViewController.h"
#import "GuideDetailTableViewController2.h"
#import "GuideDetailTableViewController3.h"
#import <QuartzCore/QuartzCore.h>

@interface GuideTableViewController (){

     NSMutableData *weatherResponseData;

    NSArray *headGuide;

    NSArray *leftImages;

}

@property (weak, nonatomic) IBOutlet UITableView *tableView;


@property (weak, nonatomic) IBOutlet UIImageView *imgHeader;


@property (weak, nonatomic) IBOutlet UIImageView *ImgTitle;


@property (weak, nonatomic) IBOutlet UIImageView *ImgWeather;


@property (weak, nonatomic) IBOutlet UIButton *btnMap;

@property (weak, nonatomic) IBOutlet UILabel *LabelWeather;

@property (weak, nonatomic) IBOutlet UILabel *LabelWeather2;

@end

@implementation GuideTableViewController

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

- (void) loadWeather{

NSURLRequest *theRequest = [NSURLRequest requestWithURL:
                            [NSURL  URLWithString:@"http://api.wunderground.com/api/3919480da5014c98/conditions/q/BR/Sao_Sebastiao .json"]];
NSURLConnection *theConnection=[[NSURLConnection alloc]
                            initWithRequest:theRequest delegate:self];
if(theConnection){
    weatherResponseData = [[NSMutableData alloc] init];
} else {
    NSLog(@"failed");
}
}

//Delegates for WeatherData

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse  *)response
{
    [weatherResponseData setLength:0];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [weatherResponseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSString *msg = [NSString stringWithFormat:@"Failed: %@", [error description]];
    NSLog(@"%@",msg);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSError *myError = nil;
    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:weatherResponseData options:NSJSONReadingMutableLeaves  error:&myError];
    NSArray *results =  [res objectForKey:@"current_observation"];
    NSString *cur = [results valueForKey:@"weather"];
    NSString *tmp = [results valueForKey:@"temperature_string"];
    NSString *wind = [results valueForKey:@"wind_string"];


    NSLog(@"Current conditions: %@, %@º, %@", cur, tmp, wind);


    self.LabelWeather.text = cur;

    self.LabelWeather2.text = tmp;

}

//JSONmetod

- (void) loadJSON{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //code
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://dl.dropbox.com/u/100670549/guide.json"]];

        NSError *error;

        if (data)
         {

            headGuide = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

            for (NSDictionary *dictionary in headGuide){
               // NSLog([dictionary description]);
            }

        }else
        {
             NSLog(@"Could not load data");
        }
        dispatch_sync(dispatch_get_main_queue(), ^{
             // code

            [self.tableView reloadData];
        });
    });
}

//Load

- (void)viewDidLoad
{
     [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self loadJSON];
    [self loadWeather];

     leftImages = [NSArray arrayWithObjects:@"btn_Stay.png", @"btn_Eat.png", @"btn_Todo.png", nil];
    //set background
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.jpg"]];

    //rounded corners

    [self.tableView.layer setCornerRadius:9.0];

    [self.ImgWeather.layer setCornerRadius:9.0];

}

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

#pragma mark - Table view data source

- (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 headGuide.count;
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];


    NSArray *dict = [headGuide objectAtIndex:indexPath.row];

    cell.textLabel.text = [dict valueForKey:@"title"];

    NSString *cellImage = [leftImages objectAtIndex:indexPath.row];
    UIImage *cellIcon = [UIImage imageNamed:cellImage];

    cell.imageView.image = cellIcon;

    return cell;
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"whereStay"]){
        GuideDetailTableViewController *vc = [segue destinationViewController];
        NSIndexPath *index = sender;
        NSDictionary *dict = [headGuide objectAtIndex:index.row];
        vc.stayGuide = dict;
    }
    else if ([segue.identifier isEqualToString:@"whereEat"]){
         GuideDetailTableViewController2 *vc1 = [segue destinationViewController];
         NSIndexPath *index = sender;
         NSDictionary *dict = [headGuide objectAtIndex:index.row];
        vc1.eatGuide = dict;
    }
    else if ([segue.identifier isEqualToString:@"whatTodo"]){
        GuideDetailTableViewController3 *vc2 = [segue destinationViewController];
        NSIndexPath *index = sender;
        NSDictionary *dict = [headGuide objectAtIndex:index.row];
        vc2.todoGuide = dict;
    }
}

#pragma mark - tableView delegate

- (void)tableView:(UITableView *)tableView didselectRowAtIndexPath:(NSIndexPath       *)indexPath{
    if(indexPath.row == 0){
        [self performSegueWithIdentifier:@"whereStay" sender:indexPath];
    }else if(indexPath.row ==1 ){
        [self performSegueWithIdentifier:@"whereEat" sender:indexPath];
    }else{
         [self performSegueWithIdentifier:@"whatTodo" sender:indexPath];
     }

    [tableView setAllowsSelection:YES];
}

@end
  • 写回答

1条回答

  • gaoXxxing 2013-02-18 08:46
    关注

    你的方法声明大写不对

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

    应该是:

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

    方法的名字是区分大小写的。

    另外,关于delegates

    self.tableView.delegate = self;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。