我是iPhone应用程序开发的新手。我正在尝试了解如何使用UITableView。
我写了简单的代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1 ;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
cell.textLabel.text = @"Hello";
return cell;
}
UITable显示内容,但如果我拖动表格内容我的应用程序终止。您可以看到视频:http://www.youtube.com/watch?v=TucTVJVhSD0
我尝试了所有的数组:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1 ;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [hello count] ;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
cell.textLabel.text = [hello objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
NSLog(@"Selected") ;
}
- (void) awakeFromNib
{
hello = [[NSArray alloc] initWithObjects:@"hello", @"world", @"end", nil];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
显示内容,如果我选择的项目是:
[Session started at 2010-03-16 19:21:48 +0200.]
2010-03-16 19:21:52.295 ViewTest[1775:207] *** -[ViewTestViewController respondsToSelector:]: message sent to deallocated instance 0x3911ec0
我是iPhone编程的新手。当我看到我所做的一切 - 我只是让应用程序终止..
答案 0 :(得分:1)
您的表格视图代码看起来很好。您是否在ViewTestViewController
?
尝试在调试器中运行应用程序。当它崩溃时,查看堆栈跟踪。它应该提供更好的暗示。
答案 1 :(得分:0)
(1)我认为你可能已经释放了你的tableview控制器实例并在它仍在使用时将其杀死,这样当tableview向它发送一个它的委托或数据源消息时它会崩溃。
(2)或者,当您将它发送到类<时,错误消息表明您正在尝试将respondsToSelector:
消息发送到ViewTestViewController的实例。 / em>的。 (-[ViewTestViewController respondsToSelector:]
vs + [ViewTestViewController respondsToSelector:]
“ - ”和“+”会有所不同。)
因此,在您的代码中的某个位置,可能是您的应用委托,您有代码说:
ViewTestViewController *myTableViewController= //..however you setup the controller
[myTableViewController respondsToSelector:@selector(someMethod)];
......什么时候应该......
[ViewTestViewController respondsToSelector:@selector(someMethod)];
我认为(1)最有可能。
答案 2 :(得分:-1)
感谢所有人。我发现了问题。我发现我没有将viewController IBOutlet与App Delegate连接起来。但为什么要显示View?
@interface ViewTestAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ViewTestViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ViewTestViewController *viewController;