小编Ben*_*Ben的帖子

如何实现利用多个ViewControllers的UIPageViewController

我一直在研究一个简单的测试应用程序来学习UIPageViewController的细节.我有它工作,但我不相信我的执行是最好的方式.我希望你们中的一些人能指出我正确的方向.

为了获得基本的理解,我以本教程为出发点. http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/

本教程创建了一个应用程序,该应用程序viewController对每个页面使用一个应用程序UIPageViewController.但是我需要利用UIPageViewController来滚动具有完全不同布局的页面.因此,为了使教程更进一步,我创建了一个主 - 详细信息应用程序,它在详细视图中使用UIPageViewController来显示三个不同的视图控制器.我坚持只为这个测试应用程序显示图像和标签,但我目前正在构建的应用程序有三个viewControllers,它们将包含tableview,imageView和textViews,或者一些textFields.

这是我的测试应用程序的故事板.

故事板

我用它DetailViewController作为数据源PageViewController.在viewDidLoad所述的DVC我建立将在三个内容视图控制器中使用的标签和图像firstViewController,secondViewControllerthirdViewController以这种方式.

if ([[self.detailItem description] isEqualToString:@"F14's"]) {
    //Here the page titles and images arrays are created 
    _pageTitles = @[@"Grim Reapers", @"Breakin the Barrier!", @"Top Gun"];
    _pageImages = @[@"F14_Grim.jpg", @"F14boom.jpg", @"F14_topgun.jpg"];

    //Here I call a method to instantiate the viewControllers 
    FirstController *selectedController = [self viewControllerAtIndex:0];
    SecondController *nextController = [self viewControllerAtIndex:1];
    ThirdController *lastController = [self viewControllerAtIndex:2];
    [_vc addObject:selectedController];
    [_vc addObject:nextController]; …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios uipageviewcontroller

34
推荐指数
2
解决办法
5万
查看次数

如何在使用UIPageViewController时将UIBarButtonItem添加到NavigationBar

请原谅我,已经有很多关于如何以编程方式将UIBarButtonItem添加到NavigationBar的问题,但我似乎无法让任何解决方案在我的情况下工作.

这是我一直在学习UIPageViewController的简单测试应用程序的布局.

故事板

我有页面视图控制器与三个独特的viewControllers很好地工作.我现在想rightBarButtonItems为每个视图控制器设置唯一.我可以轻松地设置一个共同barButtonItemDetailViewController通过简单地这样做.

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"Whatever" 
                              style:UIBarButtonItemStylePlain 
                              target:self 
                              action:@selector(doSomething)];    

self.navigationItem.rightBarButtonItem = newButton;
Run Code Online (Sandbox Code Playgroud)

鉴于我需要为这三个页面中的每个页面都有一个独特的按钮,pageViewController我无法在中设置按钮detailViewController.我viewDidAppear在三个控制器上尝试了上面的代码, 但按钮不会出现.我也尝试以相同的方式创建按钮,然后设置它,没有运气.

DetailViewController *vc = [[DetailViewController alloc] init];
vc.navigationItem.rightBarButtonItem = newButton;
Run Code Online (Sandbox Code Playgroud)

我知道我离这里很近,我只是不确定如何指定我需要在NavigationController的NavigationBar中添加一个按钮,该按钮运行我的contentViewControllers所嵌入的detailViewController.任何帮助都会很棒特别是SNIPPETS.

作为旁注,我尝试了一些其他方法,这些方法都存在问题.

  • 设置按钮viewDidLoad而不是viewDidAppear
    • 这不起作用,因为viewDidLoad每次从一个页面滑动到下一个页面时都不会调用该方法.viewDidAppear然而,方法是我试图在那里设置按钮.有可能viewWillAppear每次调用,但我没有检查.
  • 在UIPageViewController委托方法中设置按钮
    • 如果用户翻阅页面以快速按钮将无法更改或无法显示,则会出现问题.

事实证明我很接近...而不是在UIPageViewController方法中创建按钮,我只需要navigationItem在我的三个视图控制器中创建一个属性.当控制器在委托方法中实例化时,我只需将navigationItem属性设置为等于detailViewController的属性.在我的viewDidApper方法中,我可以创建按钮.然后在viewWillDisappear我将按钮设置为nil.你也可以在创建按钮viewdidLoadDetailViewController和更改文本和行动viewDidAppear的各个viewControllers的.这是一个例子.

在委托方法中

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController …
Run Code Online (Sandbox Code Playgroud)

uinavigationbar uinavigationcontroller uibarbuttonitem ios uipageviewcontroller

11
推荐指数
1
解决办法
1万
查看次数

重新加载CollectionView不会清除以前加载的单元格

我有一个iOS应用程序,它利用RestKit 0.20.1从Restful Web服务中检索数据.我还应该添加应用程序使用CoreData.应用程序启动时,主屏幕是一个由默认搜索词填充的集合视图.标题中还有一个用作搜索栏的文本字段.

当用户使用搜索栏时,我无法清除以前加载的单元格.它只是加载新单元格并将之前的单元格向下推.这是适用的代码.

- (BOOL) textFieldShouldReturn:(UITextField *)textField {

//This sets up the NSDictionary for the Restkit postObject parameters
    NSArray *objects =[NSArray arrayWithObjects:textField.text, nil];
    NSArray *keys =[NSArray arrayWithObjects: @"query",nil];
    NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    self.search=params;

//This is the POST request to the server
    [[RKObjectManager sharedManager] postObject:nil path:@"/rest/search?ip=255.255.255.0" parameters:search success:nil failure:nil];

//This is what I thought would clear out the old and replace with the new    
    [self.collectionView reloadData];    

    [textField resignFirstResponder];
    return YES; 
}
Run Code Online (Sandbox Code Playgroud)

我引用了这个问题如何删除所有项目并向UICollectionView添加新项目?并且[collectionView reloadData]是公认的答案.

我选择了 …

core-data reloaddata ios uicollectionview restkit-0.20

5
推荐指数
1
解决办法
1万
查看次数

使用popToRootViewController时,我丢失了导航栏

我有一个iOS应用程序,主屏幕是UICollectionViewController.从集合视图中选择项目时,视图将被推送到项目的详细视图.在详细视图中,我构建了一个从侧面移出的抽屉/滑块.为了让视图看起来像我想要的方式,我隐藏了默认导航栏并通过故事板插入了一个.

截图

我遇到了一个问题,当隐藏默认导航栏时,您将失去使用导航控制器附带的后退按钮功能.我通过在后退按钮处添加一个按钮来解决这个问题(上面的图像显示没有按钮).现在我使用下面的代码行回到集合视图.

[self.navigationController popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

它以我想要的方式工作,除了当我返回到集合视图时我丢失了导航栏.有没有人对如何解决这个问题有任何想法?提前致谢!

iphone uinavigationcontroller ios poptoviewcontroller

3
推荐指数
1
解决办法
1527
查看次数