@interface Article : NSObject
@property (nonatomic, strong) NSString *imageURLString;
@end
@implementation Class
@synthesize imageURLString = _imageURLString;
- (void)setImageURLString:(NSString *)imageURLString {
_imageURLString = imageURLString;
//do something else
}
Run Code Online (Sandbox Code Playgroud)
启用ARC时,我是否正确覆盖了设置器?
在2011年WWDC会话102,苹果推出视图控制器遏制,这是创建定制的视图控制器容器的能力,类似于UITabBarController,UINavigationController和类似物.
我多次看过这些例子.有一系列与这种模式相关的方法,但有点难以弄清楚它们.我将在这里发布我认为正在发生的事情,看看社区是否会确认或否定我的怀疑.
场景1:从无父节点移动到新的父视图控制器
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view]; // or something like this.
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
前两行必须按给定的顺序发生,还是可以反转?
场景2:从父视图控制器移动到没有父视图控制器
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)
还有必要打电话[vc didMoveToParentViewController:nil]吗?会话102中的示例在这种情况下没有这样做,但我不知道这是否是遗漏.
场景3:从一个父视图控制器移动到另一个父视图控制器
这可能以下列方式发生,因为将封装每个父视图控制器中的逻辑.
// In the old parent
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
// In the new parent
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view];
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
问题
我的主要问题是:一般来说,视图控制器包含应该如何工作?上面给出的机制是否正确?
是否有必要在打电话willMoveToParentViewController前打电话addChildViewController?这对我来说似乎是合乎逻辑的顺序,但它是否是必要的?
打电话didMoveToParentViewController:nil后有必要打电话removeFromParentViewController吗?
我刚刚下载了带有iOS 5 SDK包的Xcode 4.2,我立即注意到我无法使用我的iPhone 3Gs和iOS 4.2.1进行调试.我只能在安装了iOS 5的iphone 4上进行调试和测试.
对于运行任何低于5.0 Xcode的iOS的任何设备,只是说"完成了iPhone3GS的运行"并且没有运行它.我的部署目标设置为3.0,因为我没有使用3.0以上的应用程序中的任何功能,我希望能够定位所有版本3.0或更高版本.我安装了所有配置文件并且是最新的.
我已经退出并重新启动了xcode,我已多次清理构建.我尝试在archtecture构建设置中添加armv6,但没有任何东西可以让我在ios 4.2.1的旧手机上构建和运行我的应用程序.
我的问题是,是否仍然可以使用适用于低于5的iOS版本的新SDK工作?如果我无法在旧手机上安装我的应用程序,我怎么能确定我的应用程序仍然可以在较低的iOS版本上运行?
编辑: 好的,看起来iOS SDK 5默认情况下放弃了对armv6的支持.您需要做的是在Target和您的Project的Build Settings下的Architectures字段中添加armv6.然后您的应用程序将能够在iPhone 3G设备上运行.答案可以在这里找到 如何使用iOS 5构建armv6和armv7架构
我需要一个根视图控制器的实例.
我试过这些方法:
UIViewController *rootViewController = (UIViewController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
Run Code Online (Sandbox Code Playgroud)
返回: null:
当我尝试获得一组控制器时:
NSArray *viewControllers = self.navigationController.viewControllers;
Run Code Online (Sandbox Code Playgroud)
它只返回一个控制器,但它不是我的根视图控制器.
如果我尝试从导航控制器:
UIViewController *root = (UIViewController*)[self.navigationController.viewControllers objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
返回: null:
有什么想法吗?还有什么我可以尝试获取我的根视图控制器的实例?
谢谢.
objective-c uiviewcontroller uinavigationcontroller ios5 swift
我用故事板构建了一个小应用程序,它运行得很好.在最终测试之前,我决定试一试,看看它是否在iOS 4.3上运行.我点击项目设置中的灰色5.0并选择4.3.
该应用程序无法使用以下错误消息进行构建:
故事板在iOS 4.3及更早版本中不可用
iPhone和iPad的故事板都告诉我.
问题是,当我切换回iOS5目标时,我仍然不断从两个故事板中获取这些错误,并且产品无法构建! 我检查:项目设置中的iOS部署目标是5.0目标应用部署目标是5.0构建设置使用iOS 5.0 SDK
还有什么办法可以将我的项目恢复到可构建状态?这是一个全新的错误还是我忘记了什么?
更新:即使在干净之后我也一直收到此错误. 我将Schemes中的调试器更改为"LLDB"并进行了额外的清理,现在该项目已构建并编译
在iOS5中, Apple 从ARCHS_STANDARD_32_BIT中删除了armv6架构.
为了保持对iPhone3G的支持,即使在iOS5中,我仍然希望在armv6中编译.
有没有人为此找到解决方案?
我刚刚遇到一个崩溃NSInvalidArgumentException,在一个以前没有这样做的应用程序上显示此消息.
应用程序尝试以模态方式呈现活动控制器UITabBarController:0x83d7f00.
我有一个UITabBarController我在其中创建AppDelegate并给它的数组UIViewControllers.
其中一个我想在点击它时以模态方式呈现.我通过实现委托方法来做到这一点
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)
如果该视图控制器属于我想以模态方式呈现的类,我返回NO并执行
[tabBarController presentModalViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在我收到了这个错误,这似乎意味着你不能在模式上呈现一个在其他地方活动的视图控制器(在tabbar中......)我应该说我在XCode 4.2 Developer Preview 7上,所以这是iOS 5(我知道NDA,但我认为我没有提供任何禁止的细节).我目前没有XCode安装来测试这是否会崩溃编译iOS4 SDK,但我几乎完全确定它没有.
我只想询问是否有人遇到过此问题或有任何建议
有人能指出我创建自定义视图控制器作为容器视图控制器的任何好例子吗?我能找到的唯一文档是UIViewController类参考中的几个段落.我觉得我需要比这更多的信息,一个示例实现会很好.谷歌根本没有发现任何事情.
我对这个方法特别感兴趣:
transitionFromViewController:toViewController:duration:options:animations:completion:
Run Code Online (Sandbox Code Playgroud) 我是iOS开发的新手.
我想在一个表格视图中添加一个页脚UITableViewController.我已经在Storyboard中以图形方式使用了作为页脚的视图,但是我无法弄清楚如何将其作为页脚连接到我的表视图.
我可以以编程方式添加脚注UITableViewController的viewDidLoad通过分配方法self.tableView.tableFooterView.但是我在Storyboard中创建了我的页脚视图,将它作为页脚添加到我的表视图的最佳实践方法是什么?
什么是iOS 5.0用户代理字符串?
这是iOS 4.0用户代理:什么是iPhone 4用户代理?
ios5 ×10
ios ×6
iphone ×3
objective-c ×3
ipad ×2
storyboard ×2
xcode ×2
build ×1
swift ×1
uitableview ×1
user-agent ×1