标签: uipageviewcontroller

在某些页面索引上隐藏 UIPageControlViewController 的 UIPageControl

我想隐藏某个 VC 上的页面控制指示器,而是显示一个带有文本“开始”的按钮。然而,用户仍然能够导航回页面控件。

我试过这个:

self.pageController = [UIPageControl appearance];
self.pageController.pageIndicatorTintColor = [UIColor redColor];
self.pageController.currentPageIndicatorTintColor = [UIColor greenColor];

if(self.pageIndex == 1){
    self.pageController.hidden = YES;
    NSLog(@"hide you!");
}
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。不使用 if 语句的设置self.pageController.hidden = YES也有效,并且也会触发 nslog。看来这只能设置一次。

我也不知道这会有多顺利。我显然不希望它在用户完全到达页面本身时发生变化,而是在向页面过渡时发生变化。

解决这个问题的最佳方法是什么?

cocoa-touch objective-c uipagecontrol ios uipageviewcontroller

4
推荐指数
1
解决办法
2498
查看次数

选择数组中的中间值 - Swift

我试图确保中间值 Lists 是构建我的应用程序时看到的第一个视图。Xcode 提供if let firstView = viewList.firstif let firstView = viewList.last但我无法练习如何选择中间值。

lazy var viewList:[UIViewController] = {
    let sb = UIStoryboard(name: "Main", bundle: nil)

    let lists = sb.instantiateViewController(withIdentifier: "Lists")
    let reminders = sb.instantiateViewController(withIdentifier: "Reminders")
    let todo = sb.instantiateViewController(withIdentifier: "To Do")

    return [reminders, lists, todo]
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.dataSource = self

    if let firstView = viewList.first {
        self.setViewControllers([firstView], direction: .forward, animated: true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

arrays uipageviewcontroller swift

4
推荐指数
1
解决办法
3677
查看次数

扑。PageView 内嵌套滚动

我有带有PageView小部件的简单页面,里面有ListView. 以及滚动PageView不起作用的地方。原因很简单。因为指针事件被嵌套的子进程消耗。

  @override
  Widget build(BuildContext context) {
    setupController();

    return PageView(
      controller: controllerPage,
      scrollDirection: Axis.vertical,
      children: <Widget>[
          ListView.builder(
            controller: controller,
            padding: EdgeInsets.all(AppDimens.bounds),
            itemCount: 15,
            itemBuilder: (context, index){
              return Container(
                height: 100,
                color: index %2 == 0 
                    ? Colors.amber : Colors.blueAccent,
              );
            },
          ),
        Container(color: Colors.green),
        Container(color: Colors.blue),
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是有什么明智的方法可以让它一起工作吗?您可能会看到 的垂直轴,但使用 的水平轴和水平轴PageView会出现完全相同的问题。PageViewListView

到目前为止我已经尝试过什么?我有一些解决方法。即使它并不复杂,但感觉不太好而且笨重。通过使用AbsorbPointer自定义控制器进行滚动。

  final controller = ScrollController();
  final controllerPage = PageController(keepPage: true);
  bool hasNestedScroll = true; …
Run Code Online (Sandbox Code Playgroud)

scroll uipageviewcontroller flutter flutter-pageview

4
推荐指数
1
解决办法
3125
查看次数

在 SwiftUI 中使用分段式选取器在两个页面之间滑动

我有一个Pickerwith.pickerStyle(SegmentedPickerStyle())使其成为分段控件。我想让页面在之间平滑滑动,而不是使用条件语句替换视图。

这是我迄今为止所做的 gif:

我做了什么

这是到目前为止的代码(由 控制if,而不是在不同页面之间切换):

struct AuthView: View {

    @State private var authPath = 0

    /* ... */

    var body: some View {
        VStack {
            Picker(selection: $authPath, label: Text("Authentication Path")) {
                Text("Log In").tag(0)
                Text("Sign Up").tag(1)
            }
            .pickerStyle(SegmentedPickerStyle())

            Spacer()

            if authPath == 0 {
                LogInView(/* ... */)
            } else {
                SignUpView(/* ... */)
            }

            Spacer()
        }
        .padding()
        .background(Color("Color.Background").edgesIgnoringSafeArea(.all))
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西UIPageViewController。如果有 SwiftUI 版本或好的替代方案,那确实会有帮助。

但是,如果我确实需要使用 UIKit UIViewRepresentable,我不知道如何使用 SwiftUI 来实现它。

ios uipageviewcontroller swift swiftui uiviewrepresentable

4
推荐指数
1
解决办法
3045
查看次数

UIPageViewController - 第一次旋转将视图重置为初始页面?

我试图了解Apple的基于页面的应用程序的默认模板.该模板显示了一种日历,每年的每个月都有一页.

在没有任何更改的情况下编译模板时,我注意到一些奇怪的东西 当应用程序启动时,它以纵向模式显示,并且 - 在翻阅某些页面(例如,到6月)后 - 您更改旋转,它以横向模式重新加载显示两个页面,但是从1月开始.但这只发生一次.在随后的方向更改中,它然后跳转到正确的"currentViewController".

这个代码似乎来自RootViewController文件,具体来说

UIViewController *currentViewController = self.pageViewController.viewControllers[0];
Run Code Online (Sandbox Code Playgroud)

坦率地说,第一次定位改变似乎被忽略了.

我想知道为什么?

xcode uipageviewcontroller ios6

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

使用UIPageViewController创建UI滚动视图滚动

我正在创建一个应用程序,我试图让一个pagescrollviewcontroller滑动屏幕,并让顶部的"导航"栏标题滚动实时与标题我有标题栏视图作为自定义视图,我能够访问滚动委托自定义滚动视图和网页浏览控制器的方法.然而.我没看到如何访问实时滚动pos?我知道这是可能的,因为twitter做到了(真的不应该在任何人的词汇中),但我不知道如何实现这一目标.

照片在此输入图像描述

主页标题在与页面控制器相同的滚动位置滑动.

当前代码:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    if(scrollView.tag == 100) {
      CGPoint point = CGPointMake(mainScrollView.contentOffset.x * 1,0);
      [titleSwipe setContentOffset:point animated:YES];
    }
    else {
        mainScrollView.contentOffset = CGPointMake(0,1);
        [mainScrollView setContentOffset:titleSwipe.contentOffset animated:YES];
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:     (BOOL)decelerate {

    CGPoint point = CGPointMake(mainScrollView.contentOffset.x * 2,0);

    [titleSwipe setContentOffset:point animated:YES];

}
Run Code Online (Sandbox Code Playgroud)

objective-c uiscrollview ios uipageviewcontroller

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

从UIPageViewController中删除页面指示器

我在iOs应用程序中使用页面视图控制器.如何从此控制器中删除点?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.dontShowChecked = NO;
    self.imagesArray = @[  ..];

    self.textsArray = @[ ........
                        ];


    // Create page view controller
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WTPageController"];
    self.pageViewController.dataSource = self;

    WTDetailViewController *startingViewController = [self viewControllerAtIndex:0];
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    // Change the size of page view controller
    CGFloat delta = [[PSDeviceInfo sharedInstance] is_iPhone] ? 50. : 50;

    self.pageViewController.view.frame = CGRectMake(0, 40., self.view.frame.size.width, self.view.frame.size.height - delta);
    [self.view …
Run Code Online (Sandbox Code Playgroud)

objective-c uipagecontrol ios uipageviewcontroller

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

Swift - UIPageViewController总是重复第二个ViewController

设置:我正在尝试创建一个带有嵌入式UIPageViewController的ViewController,它有4个页面,每个页面都是自己的ViewController.

问题:滚动时总是重复第二个视图.例如,使用View1,View2,View3,View4滚动显示View1,View2,View2,View3,View4然后向后滚动具有此顺序View4,View3,View3,View2,View1即使页面控件准确.

我在网上看了很多教程,包括这里这里的答案.

这是我的页面视图控制器类:

import UIKit

class HostGamePageViewController: ROLViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {

  // Constants
  let ViewControllers: NSArray = ["HostGameTest1", "HostGameTest2", "HostGameTest3", "HostGameTest4"]

  // Properties
  var pageViewController: UIPageViewController!
  var currentViewController: String!

  // UI
  @IBOutlet var pageControl: UIPageControl!

  override func viewDidLoad() {
    super.viewDidLoad()

    pageViewController = storyboard?.instantiateViewControllerWithIdentifier("HGPageViewController") as? UIPageViewController
    pageViewController.delegate = self
    pageViewController.dataSource = self

    let startingViewController = viewControllerAtIndex(0)!
    pageViewController.setViewControllers([startingViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: {done in })

    addChildViewController(pageViewController)
    view.addSubview(pageViewController.view)
    pageViewController.view.frame = view.bounds
    pageViewController.didMoveToParentViewController(self)
    view.gestureRecognizers = pageViewController.gestureRecognizers

    // Setup …
Run Code Online (Sandbox Code Playgroud)

ios uipageviewcontroller swift

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

如何为UIPageViewControllerDataSource提供默认实现?

我认为这个问题的答案一般会解决Objective-C协议的问题,但这是我遇到的第一个这类问题.

我期望在实现UIPageViewControllerDataSourceWithConnections时使用这些方法.

import UIKit

protocol UIPageViewControllerDataSourceWithConnections: UIPageViewControllerDataSource {
    var connectedViewControllers: [UIViewController] {get}
}

extension UIPageViewControllerDataSourceWithConnections {
    func pageViewController(pageViewController: UIPageViewController,
        viewControllerBeforeViewController viewController: UIViewController
    ) -> UIViewController? {return connectedViewController(
        current: viewController,
        adjustIndex: -
    )}

    func pageViewController(pageViewController: UIPageViewController,
        viewControllerAfterViewController viewController: UIViewController
    ) -> UIViewController? {return connectedViewController(
        current: viewController,
        adjustIndex: +
    )}

    private func connectedViewController(
        current viewController: UIViewController,
        adjustIndex: (Int, Int) -> Int
    ) -> UIViewController? {
        let requestedIndex = adjustIndex(connectedViewControllers.indexOf(viewController)!, 1)
        return connectedViewControllers.indices.contains(requestedIndex) ?
            connectedViewControllers[requestedIndex] : nil
    }

    func presentationCountForPageViewController(pageViewController: UIPageViewController) …
Run Code Online (Sandbox Code Playgroud)

protocols default-implementation uipageviewcontroller swift

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

IOS UIPageViewController - 仅滑动屏幕的某些部分

我试图设计一个包含滑动部分的屏幕.我有一个带有一个imageview的屏幕,底部有两个按钮.我想只滑动imageview而不是底部区域.屏幕是这样的

在此输入图像描述

目前问题是整个屏幕也包括按钮.

这是我的代码

ViewController.swift

import UIKit

class ViewController: UIViewController, UIPageViewControllerDataSource {

    var pageImages:NSArray!
    var pageViewController:UIPageViewController!

    override func viewDidLoad() {
        super.viewDidLoad()

        pageImages = NSArray(objects: "startscreen1","startscreen2","startscreen3")


        self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("MyPageViewController") as! UIPageViewController

        self.pageViewController.dataSource = self

        let initialContenViewController = self.pageTutorialAtIndex(0) as TutorialScreenViewController

        let viewControllers = NSArray(object: initialContenViewController)

        self.pageViewController.setViewControllers(viewControllers as! [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)





       /* self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)*/

        self.pageViewController.view.frame = CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height-100)

        self.addChildViewController(self.pageViewController)
        self.view.addSubview(self.pageViewController.view)
        self.pageViewController.didMoveToParentViewController(self)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of …
Run Code Online (Sandbox Code Playgroud)

iphone ios swipe-gesture uipageviewcontroller swift

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