2009-07-24 4 views
2

프로그래밍 방식으로 뷰를 만들려고합니다. 내가 갖고 싶은 결과는 내부에 tableview가있는 스크롤 뷰입니다. 그리고이 테이블에서 내가 원하는 뷰가 일부 버튼테이블 뷰 아래에 단추 추가

나는이 시도 그렇게 정확히 방법을 모르는를 추가 할 수 있지만 작동하지 않습니다

내가 없거나 잘못을하고있는 중이 야 무엇
- (void)loadView { 
    [super loadView]; 

    tableView = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStyleGrouped]; 
    [tableView setDelegate:self]; 
    [tableView setDataSource:self]; 

    scrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]]; 
    //[scrollView setBackgroundColor:[UIColor blackColor]]; 
    [scrollView setBouncesZoom:YES]; 

    deconnectButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
    [deconnectButton setTitle:@"Deconect" forState:UIControlStateNormal]; 
    [deconnectButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 

    //[deconnectButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside]; 
    deconnectButton.frame = tableView.frame; 
    NSLog(@"Tableview frame : %@", NSStringFromCGRect(tableView.frame)); 

    [scrollView addSubview:deconnectButton]; 

    [scrollView addSubview:tableView]; 


    [[self view] addSubview:scrollView]; 


} 

?

답변

16

사실 나는 해결책을 찾았습니다. tableview에는 tableFooterView라는 속성이 있습니다. 당신이해야 할 모든입니다에 :

tableView = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStyleGrouped]; 
[tableView setDelegate:self]; 
[tableView setDataSource:self]; 

// create a UIButton (Deconnect button) 
UIButton *btnDeco = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnDeco.frame = CGRectMake(0, 0, 280, 40); 
[btnDeco setTitle:@"Déconnecter" forState:UIControlStateNormal]; 
btnDeco.backgroundColor = [UIColor clearColor]; 
[btnDeco setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 
[btnDeco addTarget:self action:@selector(deconnect:) forControlEvents:UIControlEventTouchUpInside]; 

// create a UIButton (Change pseudo button) 
UIButton *btnChange = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnChange.frame = CGRectMake(0, 50, 280, 40); 
[btnChange setTitle:@"Changer Pseudo" forState:UIControlStateNormal]; 
btnChange.backgroundColor = [UIColor clearColor]; 
[btnChange setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 
[btnChange addTarget:self action:@selector(changePseudo:) forControlEvents:UIControlEventTouchUpInside]; 


//create a footer view on the bottom of the tabeview 
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(20, 0, 280, 100)]; 
[footerView addSubview:btnDeco]; 
[footerView addSubview:btnChange]; 

tableView.tableFooterView = footerView; 
[footerView release]; 

[[self view] addSubview:tableView]; 
2

UITableView는 UIScrollView의 하위 클래스이므로 스크롤 할 때와 달리 UITableView의 크기를 다르게 관리해야 할 것입니다.

코드가 tableView 및 deconnectButton을 동일한 크기로 설정하고 크기가 scrollView 수퍼 뷰의 크기 인 것 같습니다. 나는 이것이 버튼을 가리는 tableView의 영향을 줄 것으로 기대한다.

당신이 묘사 한 바를 토대로, 테이블의 내용을 기준으로 테이블의 크기를 계산하고 그에 따라 프레임을 설정해야하는 것처럼 들립니다. 그런 다음 버튼의 프레임을 바로 아래에 설정하십시오. 또한 contentSize 속성을 사용하여 scrollView의 크기를 설정해야합니다. 이 시나리오의 문제는 항상 scrollView의 크기와 버튼의 위치를 ​​tableView의 크기와 동기화하여 유지해야한다는 것입니다.

테이블의 마지막 행을 단추로 만들고 외부 스크롤보기를 제거 할 수 있습니다. 결국 코드가 적어 질 수 있습니다.

1

당신 경우 :

UIView의 - 추가 -Finaly가 tableFooterView 여기

에 설정이보기에 버튼을 코드입니다 -Create UINavigationController 안에 UITableView를 가지고 있습니다. UITableViewController/UIViewController 아래쪽에 툴바 항목을 설정할 수 있습니다.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil]; 
self.toolbarItems = @[barButton]; 

같은뿐만 아니라 도구 모음을 표시 기억하시기 바랍니다 : 아마 테이블 아래보기를 해킹보다 더 깨끗

self.navigationController.toolbarHidden = NO; 

//or animated 
[self.navigationController setToolbarHidden:NO animated:YES]; 

합니다.