在过去的几天里,我一直在努力解决这个问题,经过这个杂耍之后,我发现我只需要数据源方法的当前索引来更新当前可见的页码
我有这个UIPageViewController数据源方法,我需要使用当前索引来获取委托方法的当前可见页面previousViewControllers transitionCompleted:(BOOL)completed
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController {
NSString *path = [[NSBundle mainBundle] pathForResource:@"pages" ofType:@"pdf"];
NSURL *pdfurl = [NSURL fileURLWithPath:path];
PDFDocument = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfurl);
contentViewController = [[ContentViewController alloc] initWithPDFAtPath:path];
currentIndex = [modelArray indexOfObject:[(ContentViewController *)viewController page]];
if (currentIndex == totalPages - 1) {
return nil;
}
contentViewController.page = [modelArray objectAtIndex:currentIndex + 1];
return contentViewController;
}
Run Code Online (Sandbox Code Playgroud)
我对如何将当前索引语句从datasource方法写入委托方法以更新当前可见页面感到困惑.
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{
if (!completed)
{
return;
}
//currentIndex = [[self.pageViewController.viewController lastObject]];
currentIndex = [self indexOfObject:contentViewController]; …Run Code Online (Sandbox Code Playgroud) 在一个UITextView有一个只读的文本,不希望任何用户交互在一切意味着不想要编辑文本,甚至不希望键盘显示.我想制作UITextView可滚动的.
现在发生的事情是,它不可滚动,内容可编辑,键盘显示,边框底部没有显示.如果有人可以帮我解决这个问题.会非常感激.
提前致谢.
现在项目正在使用App委托类中的MainWindow.xib作为主nib文件.它在main.m文件中有这个代码
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
我想用Mainstoryboard替换它.我在info.plist文件中将其更改为Mainstoryboard文件基本名称,但它显示没有设置app delegate的错误.必须指定应用程序委托类才能使用主故事板文件.
我应该在App委托类中使用什么编码来使用Mainstoryboard文件.
谢谢
在UITextview当被按下的时间越长放大镜触摸显示出来.我怎么能禁用它.
我有一个带UIBarButtonItems的UIToolbar.我想为它添加分段控件.
//Add UIToolbar
toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 425, 320, 35)];
toolbar.barStyle = UIBarStyleBlackOpaque;
[self.view addSubview:toolbar];
//Add Gallery Button
UIButton *galleryButton = [UIButton buttonWithType:UIButtonTypeCustom];
[galleryButton addTarget:self action:@selector(ScrollView:) forControlEvents:UIControlEventTouchUpInside];
galleryButton.frame = CGRectMake(0, 0, 25, 25);
UIImage *ime = [UIImage imageNamed:@"_gallery.png"];
[galleryButton setImage:ime forState:UIControlStateNormal];
UIBarButtonItem *gallerybutton = [[UIBarButtonItem alloc] initWithCustomView:galleryButton];
//Add play/Pause button
_playButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_playButton addTarget:self action:@selector(playpauseAction:) forControlEvents:UIControlEventTouchUpInside];
_playButton.frame = CGRectMake(0, 0, 25, 25);
[_playButton setImage:[UIImage imageNamed:@"1play.png"] forState:UIControlStateNormal];
[_playButton setImage:[UIImage imageNamed:@"audiopause.png"] forState:UIControlStateSelected];
UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithCustomView:self.playButton];
UIBarButtonItem …Run Code Online (Sandbox Code Playgroud) 这是检查AVAudioPlayer's当前播放时间的正确方法.
[audioPlayer play];
float seconds = audioPlayer.currentTime;
float seconds = CMTimeGetSeconds(duration);
Run Code Online (Sandbox Code Playgroud)
我怎么可以编码
[audioPlayer play];
Run Code Online (Sandbox Code Playgroud)
当currentTime等于11秒时
[self performSelector:@selector(firstview) withObject:nil];
Run Code Online (Sandbox Code Playgroud)
并且在firstTime等于23秒后的第一次查看
[self performSelector:@selector(secondview) withObject:nil];
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答.
我正在尝试编写一些单元测试来测试NSOperations我们正在编写的一些自定义.我想要做的是创建一个模拟NSOperation并将其放在上面NSOperationQueue,然后等待它完成.我知道我可以调整方法而根本不使用OCMock,但我真的不想那样做.我想用OCMock.我试图运行的代码如下所示:
MYOperation *operation = [MYOperation new];
id mockOperation = [OCMockObject partialMockForObject:operation];
[NSOperationQueue *queue = [NSOperationQueue new];
[queue setMaxConcurrentOperationCount:1];
[queue addOperation:mockOperation];
Run Code Online (Sandbox Code Playgroud)
当单元测试到达此行时:
[queue addOperation:mockOperation];
Run Code Online (Sandbox Code Playgroud)
我调用了一个解除分配的对象异常.有人对我如何克服这个问题有任何建议吗?
我想添加多个方法,在按下按钮时作为选择器响应.按下按钮时,一个按钮可以有两个被调用的方法吗?
通过我的研究,我发现,在Objective-C Programming Language Guide中,一个按钮将调用所有方法与选择器同名.
我希望我的按钮可以同时执行两个操作:
显示数组中的视图.
UIBarButtonItem*play = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(play :)];
欣赏建议.
谢谢
这段代码有什么问题,因为当我按下按钮弹出时 UIPickerview.什么都没发生.这是为什么
-(void)pickerview:(id)sender
{
items =[[NSArray alloc]initWithObjects:@"Hindi",@"English",nil];
pickerView=[[UIPickerView alloc] initWithFrame:CGRectMake(10,100,150,150)];
pickerView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;
pickerView.backgroundColor = [UIColor clearColor];
[pickerView selectRow:1 inComponent:0 animated:YES];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
return [items count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return[items objectAtIndex:row];
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这段代码有什么问题.
使用currentIndex作为NSNumber并将NSNumber保存在NSUserDefaults中。
使用currentIndex在NSUserDefaults中存储书签页面
这就是我将currentIndex保存在NSUserdefaults中的方式:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:currentIndex forKey:@"currentIndex"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)
如果这是将currentIndex保存在NSUserdefaults中的正确方法,那么我如何才能在NSUserdefaults中检索保存的currentIndex。
感谢帮助。
iphone ×8
objective-c ×4
ios ×2
ios6 ×2
uitextview ×2
appdelegate ×1
methods ×1
nsnumber ×1
ocmock ×1
selector ×1
uiscrollview ×1
uitoolbar ×1
unit-testing ×1