Tag: uiviewcontroller

如何检查当前是否显示UIViewController?

如何检查当前是否显示UIViewController ? 我的UIViewControllers正在监听NSNotifications – 即使他们没有显示(即没有显示)。 所以我可以有10个UIViewController在后台观察来自NSNotificationCenter 。 当一个NSNotification被UIViewController发布和接收,我想知道它是否正在显示。 如果不是的话,我只需要设置一个布尔值,这样就可以在视图呈现的时候处理它。 如果它现在正在显示,我会做更多的事情,如立即更新表,等等…

确定出现的视图是否在导航栏中被按下或来自后退button

有没有办法来判断一个新的控制器是来自导航后退button还是被推入堆栈? 编号喜欢重新加载数据只推动导航堆栈,而不是一个后退button按下。

void _UIPerformResizeOfTextViewForTextContainer中的断言失败

我正在从BOX导入文件。 我用过盒子sdk V2。 它导入成功,但在导入时,屏幕必须在下一个控制器上导航。 我有这个崩溃 NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"CategoryOptionView" owner:nil options:nil]; 这是错误 断言失败_UIPerformResizeOfTextViewForTextContainer(NSLayoutManager *,UIView *,NSTextContainer *,NSUInteger)(),/SourceCache/UIFoundation_Sim/UIFoundation-229/UIFoundation/TextSystem/NSLayoutManager_Private.m:1516 2013-11-22 08:04:10.083 PunchList [ 1019:6a2b] ***终止应用程序由于未捕获的exception“NSInternalInconsistencyException”,原因:“只能运行在主线程!

无法更新viewDidLoad中的view.layer.frame?

我想在我的单个视图控制器项目的viewDidLoad方法中执行以下代码: self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20); 但它没有给出所需的插图。 然而,其他用户界面的变化,我在同一个方法做工作,例如 self.view.layer.backgroundColor = [UIColor orangeColor].CGColor; 上面的代码行工作和背景是改变为橙色,但框架没有。 只有当我把代码行放在viewDidAppear中时,插入才有效。 我想了解这个行为的关键原因是否有人可以解释。 先谢谢你。

supportInterfaceOrientations更改时如何通知系统?

我的根视图控制器的supportedInterfaceOrientations的实现几乎总是返回UIInterfaceOrientationMaskAll ,但是有一个边界情况返回UIInterfaceOrientationMaskLandscape 。 这是工作,如果用户旋转设备。 但是,如果设备处于纵向模式,则不会调用supportedInterfaceOrientations方法,除非用户手动旋转设备。 我怎样才能以编程方式告诉系统这个方法的返回值已经改变了? 根据文档,似乎我应该能够调用[UIViewController attemptRotationToDeviceOrientation]但是这并没有任何效果( supportedInterfaceOrientations永远不会被调用,屏幕不旋转)。 我发现其他人已经发布了各种解决方法来尝试解决这个问题,但是他们都没有在我的testing中工作。 我怀疑他们可能在iOS 5.0中工作,但不是在iOS 6.0中工作。 我在根视图控制器的shouldAutorotate方法中返回YES 。

当视图控制器以模态方式呈现时,在iOS 9中未调用“viewWillTransitionToSize:”

我从另一个展示视图控制器: – (void)showModalView { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MySecViewController *mySecViewController = [storyboard instantiateViewControllerWithIdentifier:@"secController"]; mySecViewController.delegate = self; [self presentViewController:mySecViewController animated:YES completion:nil]; } 然后在呈现的UIViewController ,方法viewWillTransitionToSize:withTransitionCoordinator:在iOS 8调用,但不在iOS 9调用… 谢谢

警告:试图在已经呈现的*上显示*(null)

这是我第一个iOS应用程序。 所以我有UIVIewController与UITableView我集成了UISearchBar和UISearchController为了过滤TableCells显示 override func viewDidLoad() { menuBar.delegate = self table.dataSource = self table.delegate = self let nib = UINib(nibName: "ItemCellTableViewCell", bundle: nil) table.registerNib(nib, forCellReuseIdentifier: "Cell") let searchButton = UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "search:") menuBar.topItem?.leftBarButtonItem = searchButton self.resultSearchController = ({ let controller = UISearchController(searchResultsController: nil) controller.searchResultsUpdater = self controller.dimsBackgroundDuringPresentation = false return controller })() self.table.reloadData() […]

viewDidLoad为UIView?

什么是UIView的viewDidLoad ? 我有一个XIB的UIView 。 我想在加载时隐藏它的一个子视图。 我试图用这个。 – (id)initWithCoder:(NSCoder *)aDecoder{ …. _theView.hidden = YES; } 但子视图_theView视图在这一点上是零。 这个答案没有帮助我,因为在创buildUIViewController , UIView还没有创build。 它在后来被编程创build。

UIVollectionView与UIViewController作为数据源

我有一个第一个键作为图像的字典数组。 我使用UIViewController作为数据源。 @interface myViewController () { NSMutableArray *textureArray1; NSMutableDictionary *dict1; UIImage *key1a; // UIImage NSString *key1b; // texture name } 我没有麻烦填充这个字典数组与UIViewController中摆放的TableView控件。 – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } UIImage *image = [[textureArray1 objectAtIndex:indexPath.row] […]

阻止使用标签栏控制器(storyboard)访问UIViewControllers

我目前遇到我的iOS应用程序的问题。 我正在尝试包含一个渐进的login模式,即:使用可以访问一些应用程序,而不需要login。 所需function如下: 在任何时候,用户都可以查看所有需要login的导航项目 当用户尝试访问需要login的uview(控制器)时,系统会提示用户使用UIAlertView提示用户login。(最好在应用程序识别发起的segue目的地被限制时显示UIAlertView)。 起初,我使用了UIViewController的一个子类,在指定的初始化程序(initWithCoder)中,将检查NSUserDefaults以查看用户是否已login。然后我将其从子类中删除。 局限性如下: 无法使用UIViewController的其他子类,即UITableViewController UIAlertView出现后视图出现,我假设会导致错误,如果子类UIViewController假定用户login。 问题摘要: 我想知道如何有条件地阻止用户访问某些UIView(控制器)和UIViewController的子类,当发生这种情况时提供一个UIAlertView。 更新1 类别和/或协议是否可以成为可行的解决scheme? 更新2 CodaFi指出,单身人士是pipe理用户状态的一个很好的解决scheme。 现在我需要弄清楚如何控制用户的访问。 当我使用故事板时,我觉得最通用的实现是inheritanceUIStoryboardSegue,并在执行方法上检查用户是否尝试访问受限制的UIViewController(也许受限制的控制器具有指定所需状态的协议属性:login/出)。 然而这里的缺点是你不能在故事板graphics编辑器中selectUIStoryboardSegue的类/子类。 我知道,我可以做的编程方式,但是,这似乎乏味,因为我将不得不添加IBActions和类似的执行segues的方法,此外,我不认为这将适用于像navigationController和tabbarControllers元素的行为方式。 有没有人有一个可行的解决scheme来限制用户的导航? 更新3 我已经为这个问题添加了一个答案,但是我仍然认为它没有答案,因为我写的答案没有考虑到导航栏控制器之间的差异。 但是它可能会帮助一些人。