Я пытался добавить UIView над моим UITableViewController. Посредством поиска, чтения и экспериментов я определил, что вместо UITableViewController я должен просто использовать UIViewController. Мне тяжело делать эту работу по разным причинам, и я хотел бы просто начать все сначала с лучшей архитектурой.
В основном я ищу примеры кода / учебные пособия, которые могли бы помочь мне полностью программно (без NIBS) создать следующее:
- Navigation-based Layout
- UIViewController
-- UIView
--- UITableView
--- Etc.
Причина, по которой я хочу UIView над моим UITableView, заключается в том, что я хочу иметь возможность добавлять UIView над моей таблицей.
-UPDATE-
Добавление кода, чтобы сделать это более понятным:
JMoviesListViewController.m - подкласс UITableViewController
- (void)loadView
{
NSLog(@"loadView called");
UIView *baseView = [[[UIView alloc] init] autorelease];
TISwipeableTableView * aTableView = [[[TISwipeableTableView alloc] init] autorelease];
[aTableView setDelegate:self];
[aTableView setDataSource:self];
[aTableView setSwipeDelegate:self];
[aTableView setRowHeight:54];
[baseView addSubview:aTableView];
self.view = baseView;
[super loadView];
}
- (void)viewDidLoad {
listOfMovies = [[NSMutableArray alloc] init];
UIView *myProgView = (UIView *)self.progView; // progView is a method that returns a UIView
[self.view insertSubview:myProgView aboveSubview:self.tableView];
[self.navigationItem setTitle:@"Now Playing"];
movies = [[Movies alloc] init];
movies.delegate = self;
[movies getMovies:[NSURL URLWithString:apiQuery]];
[super viewDidLoad];
}
- (UIView *)progView {
if (progView == nil)
{
// create a progress view
//x,y,w,h
progView = [[UIView alloc] initWithFrame:CGRectMake(110, 110, 95, 30)];
progView.backgroundColor = [UIColor grayColor];
progView.tag = 1; // tag this view for later so we can remove it from recycled table cells
progView.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
progView.layer.cornerRadius = 5;
UILabel *activityLabel = [[UILabel alloc] init];
activityLabel.text = NSLocalizedString(@"Loading...", @"string1");
activityLabel.backgroundColor = [UIColor grayColor];
activityLabel.textColor = [UIColor whiteColor];
activityLabel.font = [UIFont systemFontOfSize:14];
[progView addSubview:activityLabel];
activityLabel.frame = CGRectMake(5, 2, 70, 25);
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];
[progView addSubview:activityIndicator];
activityIndicator.frame = CGRectMake(70, 5, 20, 20);
}
return progView;
}
Для ясности, код работает нормально, проблема в том, что строки ячеек таблицы "просачиваются" через бланковщик UIView, вставленный с этой строкой
[self.view insertSubview:myProgView aboveSubview:self.tableView];
заставляет меня поверить, что myProgView
не aboveSubview:self.tableView
.