我有一个UIViewController
包含a 的顶级UITableView
.顶级UIViewController
实例化a NavigationController
,并将另一个推UIViewController
送到NavigationController
.IE我们推进了新的第二种观点.第二个视图在左上角有通常的"后退"按钮,允许您导航回顶层视图.
当从第二个视图导航回顶层视图时,是否有可能UITableView
使用在第二个视图中生成的数据重新绘制顶层视图,通过调用cellForRowAtIndexPath
顶层,如果是,那么如何执行此操作?
我有一个iPhone SDK应用程序,有多个视图在用户创建内容时出现和消失.在设备上使用该应用程序一段时间后,我遇到以下崩溃:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) backtrace
#0 0x33369ebc in objc_msgSend ()
#1 0x320e5248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded] ()
#2 0x338b4a14 in -[NSObject performSelector:withObject:] ()
#3 0x320e5098 in -[UIAnimator stopAnimation:] ()
#4 0x320e4b7c in -[UIAnimator(Static) _advance:] ()
#5 0x320e4a34 in LCDHeartbeatCallback ()
#6 0x34350e60 in HeartbeatVBLCallback ()
#7 0x332e91c0 in IOMobileFramebufferNotifyFunc ()
#8 0x316532f8 in ?? ()
#9 0x33866b50 in __CFMachPortPerform ()
#10 0x338ae52a in CFRunLoopRunSpecific ()
#11 0x338adc1e in CFRunLoopRunInMode ()
#12 0x3434e1c8 in GSEventRunModal ()
#13 0x32002c30 in …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,当在a textField
中单击a时UITableViewCell
,该方法tableView:didSelectRowAtIndexPath:
不会被调用.问题是,我需要将我滚动tableView
到正确的位置,否则键盘会在第一个响应者上方.
我必须像这样移动代码:
[[self tableView] scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
Run Code Online (Sandbox Code Playgroud)
进入我的tableView
委托方法和我的UITextField
委托方法,textFieldDidBeginEditing:
.
是创建新方法的最佳方法,将单击的单元格/文本字段的indexPath传递给它,并从tableView委托和UITextField
委托调用该方法?更好的办法吗?
我有一个核心数据应用程序,它使用导航控制器深入查看详细信息视图,然后如果您在详细信息视图中编辑其中一行数据,您将进入该单行的编辑视图,就像在Apples CoreDataBooks中一样示例(除了CoreDataBooks本身只使用一个UITextField
,而不是UITableViewCell
像我一样的子视图)!
编辑视图是以编程方式UITableviewController
创建其单个部分单行和UITextfield
单元格的表.
我想要发生的是当您选择要编辑的行并将编辑视图推入导航堆栈并且编辑视图在屏幕上移动时,我希望将文本字段选为firstResponder,以便键盘已经显示当视图在屏幕上移动以占据位置.就像在联系人应用程序或CoreDataBooks应用程序中一样.
我目前在我的应用程序中有以下代码导致视图加载,然后你看到键盘出现(这不是我想要的,我希望键盘已经在那里)
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[theTextField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
你不能把它放进去,-viewWillAppear
因为尚未创建文本字段,所以theTextField
是零.在CoreDataBooks应用程序中,他们实现我想要的东西,他们从笔尖加载他们的视图,所以他们使用相同的代码,但在-viewWillAppear
文本字段已经创建!
无论如何在没有创建笔尖的情况下解决这个问题,我希望保持实现编程以实现更大的灵活性.
非常感谢
我差不多完成了UITableViewCell
一个UITextField
用它来实现.而不是经历CGRectMake
,UITableViewCell.contentView
我已经以更简单的方式实现它:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
[cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
amountField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 190, 30)];
amountField.placeholder = @"Enter amount";
amountField.keyboardType = UIKeyboardTypeDecimalPad;
amountField.textAlignment = UITextAlignmentRight;
amountField.clearButtonMode = UITextFieldViewModeNever;
[amountField setDelegate:self];
[[cell textLabel] setText:@"Amount"];
[cell addSubview:amountField];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
然后我还实现了该didSelectRow
方法,重新设置textField以允许显示其他字段的输入视图.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[amountField resignFirstResponder];
...
}
Run Code Online (Sandbox Code Playgroud)
这很顺利,只有表中还有其他行,当选择其他行时,整个单元格被选中并变成蓝色,而我的UITextField没有,我的意思是选择了字段,我可以输入文字但是没有选择单元格.我测试了它并发现问题在于:
[cell addSubview:amountField];
Run Code Online (Sandbox Code Playgroud)
这似乎打破了可选择的单元格行为,甚至添加它[cell contentView]
都不能解决这个问题.我错过了什么?
我在我的故事板(iPad)中定义了一个包含a的视图UICollectionView
,在视图的底部还有一个UIToolbar
.在UICollectionView
我添加了一个UICollectionViewCell
(由iPadCellCollectionViewCell
类实现),其中包含另一个视图,它是一个Core-Plot Graph(一个CPTGraphHostingView
类).
我有一个名为X的类来实现UICollectionViewDelegate
和UICollectionViewDataSource
.
在类X中,我构建了我的视图的每个单元格(在ViewDidLoad
)Core-Plot Graph中,我有以下代码将图形链接到UICollectionViewCell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId";
iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
MyChart* chart = [_charts objectAtIndex:indexPath.row];
cell.hostingView.hostedGraph = chart.barChart;
return cell;
Run Code Online (Sandbox Code Playgroud)
}
它工作正常,我的所有图表都正确显示在屏幕上.当用户滚动视图时,会出现问题,然后一个或多个单元格变为"空白".我真的不明白为什么.
我已经找到一个解决办法,而不是添加CPTGraphHostingView
在UICollectionViewCell
在界面生成器,我建立它自己和以前的代码变为:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId";
iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
[cell.contentView addSubview:[_hostingViews objectAtIndex:indexPath.row]]; …
Run Code Online (Sandbox Code Playgroud) 目前,我做的NSURLConnection
时候mySearchBar.text
没有变化.我遇到了一个问题,即如果用户输入的文字过快,则会respondData
损坏.
所以,我想知道有没有办法检查是否NSURLConnection
仍然加载?如果是,我如何删除当前连接并开始新连接?
要在我的应用中播放视频,我MPMoviePlayerController
将其设置并添加到子视图中.用户可以使用捏合手势切换到全屏模式.
在此viewController
(包含电影播放器视图)中,我viewWillDisappear
将对象设置为nil.
但是,在iOS 6中,当激活全屏模式时MPMoviePlayerController
,包含Movie Player视图的视图控制器会调用方法viewWillDisappear
和viewDidDisappear
.
在iOS5中,没有调用那些方法.
好的,我知道还有其他帖子关于你怎么不能从OS X二进制文件中实际删除Objective-C符号,因为它们对于Obj-C来说是必要的,但我的情况有点不同.
我有一个二进制文件,它是一个包.它既可以用作VST插件,也可以用作AudioUnit插件.这个想法是二进制包含所有这两种格式的入口点,你只编译一次,然后将其命名一个副本" .VST "为VST版本,而" .component "为AU版本. (这是使用JUCE框架BTW.)
问题是对于AU方面,您必须导出Obj-C类以创建Cocoa UI
视图.在VST方面,永远不会使用此类.但是如果你有像Ableton Live这样的主机允许你同时加载同一个插件的AU和VST版本,那么现在我们遇到了典型的Obj-C命名空间冲突问题.
在VST方面,特定的Obj-C类永远不会被使用.所以我想做的是使用"strip"从生成的二进制文件中删除那些Obj-C类.这仍然保留了为两种格式只编译一次的优点.
无论如何,我已经尝试过使用"strip -R stripfile.txt <path to binary>"
,其中stripfile.txt包含我想要删除的符号,但它始终无法说明在二进制文件中找不到符号.我已经尝试在条带文件中修改名称,但这没有帮助(或者我做错了).
以下是我想要剥离的相关符号,作为"nm -m"的输出:
000000000003bb00 (__TEXT,__text) non-external -[JuceDemoProjectAU description]
000000000003bb60 (__TEXT,__text) non-external -[JuceDemoProjectAU interfaceVersion]
000000000003ba00 (__TEXT,__text) non-external -[JuceDemoProjectAU uiViewForAudioUnit:withSize:]
0000000000b02398 (__DATA,__objc_data) external _OBJC_CLASS_$_JuceDemoProjectAU
0000000000b023c0 (__DATA,__objc_data) external _OBJC_METACLASS_$_JuceDemoProjectAU
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
顺便说一下,我随后能够动态注册有问题的类(使用唯一的名称),这也解决了这个问题.但是,如果我可以开始工作,我可以为现有的二进制文件部署解决方案.
将我的项目更新为AFNetworking
,Xcode显示此错误:
@property (nonatomic, strong) dispatch_queue_t completionQueue;
Run Code Online (Sandbox Code Playgroud)
具有' retain or strong
'属性的属性必须是对象类型.
我无法理解为什么官方示例没有错误警告?
iphone ×6
objective-c ×6
ios ×4
cocoa-touch ×3
uitableview ×2
afnetworking ×1
audiounit ×1
cocoa ×1
cptbarplot ×1
ios6 ×1
navigation ×1
uiscrollview ×1
vst ×1