Tag: uistoryboard

我的Base Internationalization storyboard是否必须对应所有非本地化语言和string的后备语言?

我已经浏览了苹果开发者的一些国际化文档和video,但是我从来没有find明确的答案。 在Apple的教程中,我看到了与en.lproj和zh.lproj一起的Base.lproj文件夹 – 示例翻译(本地化)是从英文到中文。 但他们告诉我,有一个文件en.lproj/myStoryboard.strings ,这是令人困惑的。 我无法看到为故事板创build英文本地化(已经是英文版)。 所以我的问题是,如果用户会看到Base.lproj/myStoryboard.storyboard的string? 如果系统在我的包中找不到用户的首选语言文件夹,那么该文件中的string是否必须是显示给用户的默认string? 我可以明确地说“永远不要使用Base.lproj/myStoryboard.storyboard ,总是回落在en.lproj/myStoryboard.strings ”? 换一种说法: 比方说,我希望我的应用程序用英文显示,只要用户的语言不可用,但我的Base.lproj/myStoryboard.storyboard是瑞典语。 然后,我必须将基础情节提要板本地化为sv.lproj/myStoryboard.strings ,并将基础情节提要中的所有string翻译为英语来完成此任务?

从故事板实现PageMenu /初始化视图控制器

我试图让这个吊舱在我的项目中工作,我坚持了解如何工作: https://github.com/uacaps/PageMenu // Create variables for all view controllers you want to put in the // page menu, initialize them, and add each to the controller array. // (Can be any UIViewController subclass) // Make sure the title property of all view controllers is set // Example: var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: […]

从应用程序委托中的Storyboard获取初始视图控制器

我试图访问我的故事板的初始viewcontroller。 它是一个导航控制器,通过一个seque连接到第二个视图控制器。 所以应用程序完成启动后,我想直接显示通过segue连接的viewController。 我试过这样的代码,但它不工作… UINavigationController *navController = (UINavigationController*)self.window.rootViewController; [navController.topViewController performSegueWithIdentifier:@"showLoginScreen" sender:self]; 我究竟做错了什么? 4年后 : 如果再过四年看我的问题,我不知道究竟是什么问题。

iOS:Storyboard CollectionView不会被触发

我有一个导航控制器内embedded的UICollectionView控制器。 collectionView列出项目,每个单元格应该延伸到ProjectDetail屏幕。 我根本无法得到继续触发。 如果我简单地在导航栏上放一个button,然后连接细节,它就可以工作。 但从我的CollectionView单元格触发不。 这里是故事板的样子: http : //cl.ly/RfcM我有一个从CollectionViewCell连接到ProjectDetailViewController 以下是我的ProjectDetailViewController中的相关代码: @interface ProjectCollectionViewController () { NSArray *feedPhotos; Projects *projects; } @end @implementation ProjectCollectionViewController – (void)viewDidLoad { [super viewDidLoad]; [self.collectionView registerClass:[FeedViewCell class] forCellWithReuseIdentifier:@"cell"]; [self loadData]; } – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"selected %d", indexPath.row); Project *project = [projects getProject:indexPath.row]; NSLog(@"project = %@", project); } – (void)loadData […]

prepareForSegue **总是**创build一个新的destinationViewController?

我只是意识到,下面的代码总是创build一个新的TagsFeedViewController。 这是segues的默认行为吗? 有没有办法configurationiOS不创build一个新的destinationViewController每次? – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"showSearchResult"]) { TagsFeedViewController *destViewController = segue.destinationViewController; destViewController.query = query; } }

XCode自定义segue类卡住了

这个问题看起来可能有些奇怪,但我无法理解为什么会发生这种情况。 我所做的是我重新命名了一个自定义的segue类,并将其反映在“自定义类”下的故事板中,但仍尝试调用旧类。 我已经清理了构build文件夹,并search了旧的自定义类名称的项目,至less在xcode中找不到任何东西。 我看故事板文件,也不在那里。 即使我删除了自定义继续,我得到: 'Could not find a segue class named 'xxxxxxxxx'' 事情是我不明白从上面得到'xxxxxxxxx',它不是在故事板文件或代码中.. [[[self view] viewWithTag:1] resignFirstResponder]; 当我debugging时,这是线程杀死显示错误的地方。 我已经删除了所有的网点,事件和赛段在文本字段。 我没有使用“xxxxxxxxx”作为任何类的自定义segue。 还有什么我可以做的更清洁的项目更彻底? 从哪里开始?

两个视图控制器之间的争论

在我的故事板上(如上所示),我有一个ViewController,其中包含注释的MKMapView。 这些注释拥有一个披露图标,当点击时,应该将用户导航到另一个ViewController。 为此,我在视图控制器之间创build了一个push segue。 然后我给它一个“showDetail”的标识符,并实现了下面的代码。 – (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { [self performSegueWithIdentifier:@"showDetail" sender:self]; } 不过,我得到以下错误。 Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.' 我哪里错了? 我曾尝试将我的源UIViewController更改为UINavigationController,但该视图只是显示为黑屏。

阻止使用标签栏控制器(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 我已经为这个问题添加了一个答案,但是我仍然认为它没有答案,因为我写的答案没有考虑到导航栏控制器之间的差异。 但是它可能会帮助一些人。

在UINavigationController上推送许多视图控制器时的内存问题

我正在为iPad制作一本交互式书籍,并使用UINavigationController来实现页面与下一页之间的导航。 当用户翻页时,下一页被推到导航堆栈顶部。 我现在有15页进入应用程序,当我尝试从第14页到第15页时,应用程序崩溃。控制台中没有错误消息,设备的崩溃日志中也没有任何logging。 故事板中的每个视图控制器的场景都有UIImageViews显示的图像在5MB到20MB之间。 视图控制器的viewDidLoad方法只被调用一次。 所有应用程序的资产总大小低于200B。 我正在使用ARC。 我使用仪器的内存监视器运行应用程序。 每当新页面打开时,应用程序的真实内存消耗增加约80MB,当达到800MB(设备是iPad 3)时,应用程序崩溃。 为什么如此巨大的内存消耗? 这是因为故事板的场景中的UIImageViewcaching图像? 当使用UINavigationController和ARC时,什么是释放内存的最佳方式? 我尝试添加设置视图控制器的viewDidDisappear:方法的所有视图控制器的子视图为零,但内存消耗保持不变。

iOS 6 – 以编程方式触发Unwind Segue什么也不做

在我的应用程序启动时,它使用segue以编程方式显示LoginViewController。 视图控制器以模态方式呈现,设置为交叉溶解。 成功的身份validation后,我想通过以编程方式触发unwind segue来closureslogin视图。 所以我把这个添加到我的头文件中: – (IBAction)unwindSegue:(UIStoryboardSegue *)segue; 现在在IB我能够控制 – 从“文件的所有者”LoginViewController拖动到退出button,并selectunwindSegue: 这将创build一个手动的继续,它显示在正确的文件的所有者和退出button的连接检查器。 然后,我从IB中的场景中单击新创build的Unwind segue,然后为其命名。 如果我点击“去”button来取消放风行动,它会把我带到上面提到的声明。 到目前为止,我在GCD块中成功进行authentication后,触发了这个过程: …. dispatch_async(dispatch_get_main_queue(), ^ { [self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self]; [self.spinner removeFromSuperview]; self.spinner = nil; }); …..运行时没有任何反应。 微调确实被删除了,但是没有任何放松继续执行的迹象。 unwindSegue:实现的一个突破点unwindSegue:永远不会被击中。 没有错误抛出。 没有任何东西被写入控制台。 标识符是正确的,我三重检查(否则它将失败)。 我看了这里和这里的答案,但我似乎没有遗漏任何东西。 但是我注意到,Xcode认为unwindSegue: 没有联系: 我无法从unwindSegue:前的小空圈拖动,并将其链接到“退出”button。 任何帮助将不胜感激。