小编Diz*_*iet的帖子

iPhone应用程序中的例外情况:模态转换已在进行中

基于一些拼凑在一起的教程,我认为目前这是一个相当简单的应用程序.我在OSX 10.6.4中使用XCode 3.2.3.它起初是一个标准的iPhone"基于窗口的应用程序".使用界面构建器我在这里使用O'Reilly视频教程添加了一个Tab Bar Controller:

http://broadcast.oreilly.com/2009/06/tab-bars-and-navigation-bars-t.html

在第一个标签中,我有一个带有两个按钮的标准UIView.两者都调用相同的函数来显示UIImagePickerController:

-(IBAction) btnPhotoClicked:(id)sender {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
if((UIButton *)sender == btnChoosePhoto)
{
    imagePicker.allowsEditing = YES;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
} else {
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}

[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
Run Code Online (Sandbox Code Playgroud)

我在模拟器中运行代码,所以只需单击"选择照片"按钮.当对话框与所选照片一起发布时,此功能运行:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary  *)info {
NSURL *mediaUrl;

mediaUrl = (NSURL *)[info valueForKey:UIImagePickerControllerMediaURL];

if (mediaUrl == nil)
{
    imagePuzzle = (UIImage *) [info valueForKey:UIImagePickerControllerEditedImage];
    if(imagePuzzle == nil)
    {
        //--- Original Image was selected ---
        imagePuzzle = (UIImage …
Run Code Online (Sandbox Code Playgroud)

iphone xcode objective-c

7
推荐指数
2
解决办法
1万
查看次数

在UITextView上,基于石英的阴影对我不起作用

我已经能够在我的视图中为许多UI对象添加阴影,包括在UIImageView中放置一些自定义绘图.但是,当应用于UITextView时,相同的代码不会产生任何内容:

[desc.layer setShadowColor:[[UIColor blackColor] CGColor]];
[desc.layer setShadowRadius:2.0f];
[desc.layer setShadowOffset:CGSizeMake(1, 1)];
[desc.layer setShadowOpacity:0.8f];
Run Code Online (Sandbox Code Playgroud)

这是我缺少的东西吗?我希望用石英来添加边框和阴影.评论时边框代码确实有效:

//Border.
/*
[desc.layer setBackgroundColor:[[KookaSettings sharedInstance].cellBackgroundColorD CGColor]];
[desc.layer setBorderColor: [[UIColor blackColor] CGColor]];
[desc.layer setBorderWidth:1.0f];
[desc.layer setCornerRadius:8.0f];
*/
Run Code Online (Sandbox Code Playgroud)

iphone shadow quartz-graphics uitextview

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

从NIB加载的视图与addSubView一起显示不遵循约束

我有一个非常简单的加载视图:

self.splashView = [[[NSBundle mainBundle] loadNibNamed:@"DownloadingData"
                                                        owner:nil options:nil] objectAtIndex:0];
[self.view addSubview:self.splashView];
Run Code Online (Sandbox Code Playgroud)

这是一个纵向模式的全高4"视网膜视图,状态栏,顶部栏和底栏设置为无.它有一些约束,使得图像沿底部对齐.我在应用程序中其他地方的控制器中使用类似视图,并调整大小进入可用空间(使用NavigationBar和TabBar)绝对没问题.但是这个直接从笔尖加载然后添加的视图似乎忽略了约束.

该视图适用于各种情况,例如,有/无导航条/标签栏的任意组合.

我已经试过的各种组合setNeedsLayout,setNeedsUpdateConstraints在splashView.我也试过调用layoutSubviews视图本身.

有人可以提供一些建议吗?在这种情况下,我应该采取另一种方式吗?或许使用viewController,或者在代码中手动添加约束?

objective-c uiview autolayout ios6

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

'委托'属性可以支持多种协议吗?

我可以找到很多关于使对象支持多个协议但没有确认@property是否可以的问题.例如,我有一个属性为的类:

@property (strong) id dataSource;
Run Code Online (Sandbox Code Playgroud)

这里传入的对象支持UITableViewDataSource协议,所以我可以在没有问题的情况下分配它,没有警告:

self.tableView.dataSource = self.dataSource;
Run Code Online (Sandbox Code Playgroud)

我还要实现另一个协议,比如说,搜索,名为CustomControllerSearchDelegate.但是,如果我开始随机调用其他方法,ARC不出所料地开始抱怨.因此,我们沿着协议道路前进,在我的对象中定义它并使属性支持它.这会导致分配到表数据源时出现问题.那么对于主要问题,我可以这样做:

@property (strong) id <UITableViewDataSource, CustomControllerSearchDelegate> dataSource;
Run Code Online (Sandbox Code Playgroud)

如果不是什么是合适的选择?

或者,什么是强制删除此编译器警告的正确方法:

Assigning to 'id<UITableViewDataSource>' from incompatible type
'id<PickerViewControllerDataSource>'
Run Code Online (Sandbox Code Playgroud)

如果解释得不好,请道歉.:/

- 编辑 -

所以我的协议现在被定义为:

@protocol PickerViewControllerDataSource <UITableViewDataSource>
Run Code Online (Sandbox Code Playgroud)

该属性定义为:

@property (strong) id <PickerViewControllerDataSource> dataSource;
Run Code Online (Sandbox Code Playgroud)

然而,编译器抛出以下错误:

No known instance method for selector 'objectAtIndexPath:'
Run Code Online (Sandbox Code Playgroud)

- 编辑 -

以上在自定义协议中声明.宣言现为:

@protocol PickerViewControllerDataSource <UITableViewDataSource>

- (id)objectAtIndexPath:(NSIndexPath *)indexPath;

@optional

- (void)searchDataWithString:(NSString*)string;
- (void)cancelSearch;

@end
Run Code Online (Sandbox Code Playgroud)

谢谢.

delegates protocols properties objective-c

2
推荐指数
1
解决办法
1484
查看次数