2010-03-16 5 views
0

iPhone 응용 프로그램 개발을 처음 사용합니다. UITableView를 사용하는 방법을 이해하려고합니다. 난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 보여줍니다 컨텐츠를,하지만 난 드래그 테이블 내용을 해요 경우 내 응용 프로그램이 종료됩니다.

- (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 

내가 총 해요 내가 배열로 모든 것을 시도 http://www.youtube.com/watch?v=TucTVJVhSD0

: 당신은 비디오를 볼 수 있습니다 iPhone 프로그래밍에 익숙하지 않습니다. 그리고 내가하는 모든 것을 보았습니다. 난 그냥 응용 프로그램을 종료하게 될뿐입니다.

답변

1

테이블보기 코드가 정상적으로 보입니다. ViewTestViewController에 다른 대리자 방법을 구현 했습니까?

디버거에서 응용 프로그램을 실행 해보십시오. 충돌이 발생하면 스택 트레이스를 살펴보십시오. 그것은 더 나은 힌트를 제공해야합니다.

+0

아니요, 프로토콜을 구현하지 않습니다. 나는 dataSource를 IB의 ViewTestViewController에 설정했다. #import @interface ViewTestViewController : UIViewController { \t NSArray * hello; } @end – kesrut

0

(1) 나는 당신이 tableview 컨트롤러 인스턴스를 공개하고 그것이 사용 중일 때 죽였다면 tableview가 그것의 델리게이트 나 데이터 소스 메시지 중 하나를 보냈을 때 충돌을 일으킬 것이라고 생각한다.

(2) 또는 오류 메시지가 당신이 클래스로 전송되어야 할 때 ViewTestViewController의 예를respondsToSelector: 메시지를 보내려고 시도하는 것을 말한다. (. -[ViewTestViewController respondsToSelector:]+ [ViewTestViewController respondsToSelector:]를 대 "-"와 "+"모든 차이를 만들)

그래서, 여러분의 코드 어딘가에 아마 앱 위임에, 당신이있어 코드를 말한다 :

ViewTestViewController *myTableViewController= //..however you setup the controller 
[myTableViewController respondsToSelector:@selector(someMethod)]; 

. ..해야 할 때 ...

[ViewTestViewController respondsToSelector:@selector(someMethod)]; 

생각합니다. (1) 가장 가능성이 높습니다.

-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;