我有一个 UISplitViewController,它的辅助(详细)VC 是一个 UICollectionViewController。我希望集合的单元格根据集合视图的大小和方面的变化来调整大小。我通过覆盖 UIContentContainer 协议方法触发此调整大小:
// MARK: - UIContentContainer protocol methods
override
func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
{
setFlowLayoutItemSizeForViewSize(size)
collectionViewLayout.invalidateLayout()
}
Run Code Online (Sandbox Code Playgroud)
当设备旋转时,这就是我想要的方式调用和工作;但是当 splitViewController?.displayModeButtonItem() 提供的按钮被按下以显示或折叠主(主)视图控制器时,不会调用此方法。由于折叠必然会更改辅助(详细信息)视图的大小,因此我认为应该在触发时调用 viewWillTransitionToSize... 方法。
所以,两个问题:
1) 实际上是否应该在按下 displayModeButtonItem 时调用 viewWillTransitionToSize... 方法?如果是这样,我似乎发现了一个错误。
2)如果我看到的实际上是正确的行为,任何人都可以建议我的辅助(详细)控制器“知道”什么时候按下 displayModeButtonItem 或者它的大小何时因该按钮而改变被压?
谢谢!
卡尔
button uisplitviewcontroller ios displaymode viewwilltransitiontosize
我有我的第一个iOS应用程序(一个相对简单的iPad应用程序,将在一个月左右发布),但现在我正在转向更雄心勃勃的东西,并可以使用一些建议.
我的下一个项目实际上是两个截然不同但密切相关的iPad应用程序,它们将共享相当多的核心功能和通用数据格式.因此,我的本能是开发这两个应用程序并结合两者共享的核心框架的开发,我希望这个共享框架能够使用CoreData并提供可供其使用的GUI元素(NIB,视图控制器).各自的应用.因此,我的另一个本能是创建3个Xcode项目:一个用于app A的iOS应用程序项目,一个用于app B的第二个iOS应用程序项目,以及一个用于共享框架的第三个CocoaTouch框架项目.
问题:
1)这是构建我的开发的正确方法,还是有更好的方法来同时开发两个密切相关的应用程序和共享框架?
2)框架可以使用CoreData吗?(我问这个是因为在Xcode中创建CocoaTouch框架项目时,没有提供使用CoreData的选项 - 也没有选择单元测试 - 就像创建iOS应用程序项目时一样).
3)是否有办法将iOS应用程序项目"转换"为框架项目,或者最好是将应用程序项目构建到框架目标中?这将让我创建包含所有Xcode设置免费赠品(NIB,核心数据等)的框架项目,而不是手动添加所有这些东西.
谢谢!
卡尔
我希望(甚至希望)这将是一个愚蠢的问题,但在与这个问题摔跤了好几个小时后,我需要一些见解.
我的iOS 5.1应用程序使用嵌套的MOC,具有PrivateQueueConcurrency子MOC,称之为MOC-Child,其父级是MainQueueConcurrency MOC,称之为MOC-Parent.MOC-Parent支持显示其实体的表视图.
MOC-Child由解析器使用,该解析器在非主线程上异步运行,以创建与从URL连接解析的XML实体描述相对应的新实体,然后通过以下方式将新实体推送到MOC-Parent.保存在MOC-Child上,它在表格视图中显示它们.这非常有效:
1) Parser creates entity in MOC-Child
2) Parser saves MOC-Child
3) New entity is added to MOC-Parent
4) New entity is displayed in MOC-Parent's table view
Run Code Online (Sandbox Code Playgroud)
但是,此Feed中任何给定实体的描述都可能随时间发生变化,因此需要在应用程序中修改其描述的实体,并更新表视图中的单元格.因此,对于feed中的每个实体描述,解析器尝试获取与所描述的实体具有相同id的MOC-Child中的实体(如果有),并且如果存在,则将现有实体的值与描述值进行比较.看看是否有任何变化.当解析器以这种方式检测到实体已被修改时,它会使用描述中的新值更新MOC-Child中现有实体的值,然后保存MOC-Child以将更改推送到MOC-Parent.
这是出问题的地方.我原以为在MOC-Child中对获取的实体所做的更改,当通过保存推送到父级时,只需"出现"在MOC-Parent中的"相同"实体中.但是,我看到的情况是,MOC-Child中已更改的实体被添加到MOC-Parent,就好像它是一个完全独立的新实体 ; 结果是MOC-Parent以及它驱动的表视图最终为每个修改过的实体提供了两个实体:
1) Parser modifies existing entity in MOC-Child
2) Parser saves MOC-Child
3) Modified entity is _added to_ MOC-Parent
4) Entity is displayed _twice_ in MOC-Parent's table view
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?如果我不能在MOC-Child中进行更改MOC-Parent中现有实体的值,我需要做什么?如果我能够在MOC-Child中这样做,除了保存MOC-Child以便在MOC-Parent中进行更改而不再添加第二次实体之外,我还需要做什么?
提前感谢您提供的任何帮助或见解!
卡尔
PS一些澄清.当我说已将更改的实体添加到MOC-Parent时,我的意思是监视MOC-Parent的NSFetchedResultsController 为更改的实体发出NSFetchedResultsChangeInsert更改类型(不是 NSFetchedResultsChangeUpdate更改类型),即使"相同"实体已经存在于MOC-Parent中.
此外,当我说"相同"实体时,我的意思是MOC-Parent中的实体具有相同的描述提供的id(在本例中为NSString)作为在MOC-child中更改的实体(不一定是相同的objectID) ,实际上显然有一个不同的objectId).
ios ×3
button ×1
concurrency ×1
core-data ×1
displaymode ×1
nested ×1
projects ×1
shared ×1
xcode ×1