我想编码一个简单的表视图>详细的应用程序开始熟悉obj-c。我使用字典popolate表,比单击我到一个空白详细视图的单元格。这项工作(我自豪地说)。当我尝试将信息发送到详细视图时,情况会变得很糟糕,下面是我得到的调试错误:xcode的第一步 - 表视图问题
2012-07-12 14:32:41.906 StoryboardTutorial [79624:f803] - [UIView setText:]:unrecognized选择发送到实例0x6eae8d0
2012-07-12 14:32:41.908 StoryboardTutorial [79624:F803] 终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:“ - [UIView的的setText:]:无法识别选择器发送到实例0x6eae8d0' *
* *第一掷调用堆栈: (0x13ca022 0x155bcd6 0x13cbcbd 0x1330ed0 0x1330cb2 0x2d41 0xdba1e 0xdbd11 0xed8fd 0xedaef 0xeddbb 0xee85f 0xeee06 0xc8a852d 0xeea24 0x27bd 0xa55c5 0xa57fa 0x93a85d 0x139e936 0x139e3d7 0x1301790 0x1300d84 0x1300c9b 0x12b37d8 0x12b388a 0x14626 0x1c4d 0x1bb5为0x1) 终止叫做抛出异常(LLDB)
和这里的一些代码块:
DetailViewController.h
// DetailViewController.h
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController{
NSString *city;
NSString *state;
IBOutlet UILabel *cityLabel;
IBOutlet UILabel *stateLabel;
}
@property (nonatomic,retain) NSString *city,*state;
@property (retain,nonatomic) IBOutlet UILabel *cityLabel,*stateLabel;
@end
DetailViewcontroller.m
// DetailViewController.m
#import "DetailViewController.h"
@implementation DetailViewController
@synthesize city,state,cityLabel,stateLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
stateLabel.text = state;
cityLabel.text = city;
}
ViewController.m
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"];
detail.city = [dataSource objectAtIndex:indexPath.row];
detail.state = [states objectForKey:detail.city];
[self.navigationController pushViewController:detail animated:YES];
UITableViewCell *cell;
cell = [tableView cellForRowAtIndexPath:indexPath];
cell.textLabel.shadowColor = [UIColor clearColor];
}
- (void)setupArray{
states = [[NSMutableDictionary alloc] init];
[states setObject:@"Roma" forKey:@"Lazio"];
[states setObject:@"Milano" forKey:@"Lombardia"];
dataSource = [states allKeys];
}
我真的不明白什么ü在didSelectRowAtIndexPath方法在做什么。并且cellForRowAtIndexPath在哪里...使用异常断点它会给你确切的点,在这之后,你的应用程序崩溃 – WaaleedKhan 2012-07-12 12:45:45
我不认为你了解cellForRowAtIndexPath的用法。根据它的实现,你可以使用它,但我怀疑这一点。但是,一步一步调试并找出错误发生在哪一行。应该有一个文本属性(因此一个setText方法)的一些对象变成了一个UIView对象。这有点奇怪。原因可能是一些不适当的类型转换或者甚至是一些内存分配错误,这些巧合地解决了UIView在哪里(预期分配的)UILable。 Enalbe僵尸找出是否有一些内存分配。发生错误。 – 2012-07-12 12:56:58
使用下面的代码创建用户DetailViewController对象。 DetailViewController * detail = [self.storyboard instantiateViewControllerWithIdentifier:@“detail”]; – 2012-07-12 13:20:09