Я занимаюсь разработкой приложения для чтения RSS и пытаюсь сделать так, чтобы у приложения было только 2 представления (просмотр таблицы и просмотр веб-страницы). Я не знаю, как добавить UIView поверх просмотра таблицы.
Так как я не могу понять ваш вопрос, надеясь, что вы сможете решить его.
1. Решение первое, показать материал на той же странице
а. Для этого в файле построителя интерфейса перетащите UIWebView и добавьте его в качестве subView в View.
Держите это веб-вид сверху выровненным.
б. Теперь перетащите UITableView и добавьте его в качестве подпредставления в UIView, скажем, y = 150, и сохраните выравнивание этого вида таблицы снизу.
с. Начните устанавливать соединения с интерфейсным файлом с вашими файлами кода. Чтобы сделать это сначала, вам нужно объявить его в вашем .h файле заголовка, как указано ниже.
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDataSource,UITableViewDelegate,UIWebViewDelegate>
{
NSMutableArray *feedsURLArray;
}
@property (weak,nonatomic) IBOutlet UITableView *feedsTableView;
@property (weak,nonatomic) IBOutlet UIWebView *feedsWebView;
@end
После объявления перейдите к вам в файл конструктора интерфейса. Теперь щелкните правой кнопкой мыши на вашем tableView, вы увидите источник данных и делегата, наведите их на ваш viewController. Наряду с этим сделайте feedsTableView, подключив его как «Ссылочные выходы».
Также подключите feedsWebView как «Ссылочные выходы».
д. После того, как мы закончили с подключениями, мы можем начать писать код. Позволяет инициализировать таблицу с помощью URL-адресов, и по щелчку UITableViewCell мы создаем NSURLRequest для объекта UIWebView. Это будет написано в вашем .m файле.
@implementation ViewController
@synthesize feedsTableView,feedsWebView;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
feedsURLArray=[[NSMutableArray alloc] init];
[feedsURLArray addObject:@"https://www.facebook.com"];
[feedsURLArray addObject:@"http://www.yahoo.com"];
[feedsURLArray addObject:@"http://www.google.com"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark Table Methods
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return feedsURLArray.count;
}-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];if(cell==nil){
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text=[feedsURLArray objectAtIndex:indexPath.row];
return cell;
}-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *urlStr=[feedsURLArray objectAtIndex:indexPath.row];
[self.feedsWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]];
}
@end
2. Второе решение — вы можете добавить свой UIViewController в UINavigationController. Этот UIViewController будет отображать только URL фидов и соответствующие данные.
Затем вам нужно создать еще один UIViewController, который будет иметь только UIWebView, который будет помещен в UINavigationController при выборе UITableViewCell.
3. Третье решение было бы создать customCell. Эта ячейка будет иметь UIWebView в качестве одного из подпредставлений.
Для этого Изначально вы можете сохранить высоту ячейки 44.0, но как только эта ячейка будет выбрана, вы можете увеличить ее, скажем, до 200, чтобы ваш UIWebView был виден. Вызовите loadRequest для UIWebView, когда произойдет нажатие.
Что нужно знать когда вы используете UIWwebView в своем приложении, вам придется обрабатывать навигацию (назад и вперед) самостоятельно. Мысль об этом — открыть браузер ios Default, используя следующий код.
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *urlStr=[feedsURLArray objectAtIndex:indexPath.row];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
}
или обратитесь к этому сайту для Демонстрация по созданию браузера который обрабатывает навигацию вперед и назад, как браузер iOS по умолчанию.
Других решений пока нет …