UITableView 相关
在写 UITableView 的 Demo 时,删除一个 cell 导致程序崩溃
在写 dataSource protocol 中的- (NSInteger)numberOfRowsInSection:(NSInteger)section
方法时,采用了 hardcode 方式。这个函数的返回值应该实时计算。
UITableView 的背景色
想要设置 UITableView 的背景色,可以采用下面的语句。
1 | self.tableView.backgroundView = nil; |
添加 Static 样式的 TableView 到另一个 View
从 XCode 特定版本之后,Static 样式的 TableView 只能添加到一个 UITableViewController 中。要想添加一个 Static 样式的 TableView 到其他的 View 中,必须先添加一个 Container View,然后在其内部添加。
其实通过编辑 UITableViewController 中 Static 样式的 TableView 的 tableHeaderView 以及 tableFooterView 就可以实现很多效果,不一定要使用上面的方法。
UIWebView 相关
UIWebView 与 UINavigationController 的配合
当想让程序中的 UIWebView 后退与前进采用 UINavigationController 的返回按钮时,可以考虑重载
1 | - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType |
这个函数返回NO
时就会终止加载。每当加载页面时,新建一个 UIWebViewController,然后 push 进去及可利用 UINavigationController 自带的返回按钮。
UIWebView 的后退
采用下面的方式让 WebView 返回最早的页面会进入死循环,内存暴涨。
1 | while([webView canGoBack]) |
因为goBack
的完成需要一定时间,期间canGoBack
的值一直为真。正确的方式之一是设置一个 flag,在webViewDidFinishLoad
中根据这个 flag 和canGoBack
来循环后退。
自定义 UIView + xib
原理是将 xib 的 file’s owner(不是 UIView 的 custom class)设置成自定义的 UIView 子类,在子类的初始化方法中加载 xib 内容。
``
(instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];if (self) {
[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil]; self.contentView.frame = self.bounds; [self addSubview:self.contentView];
}
return self;
}
```
One more pit
项目中使用到了开源的 JDFlipNumberView 来显示令牌上的数字。我看了一下 readme,发现这个库是自带一些动画效果的,它有两套 API,而项目中使用的是静态的版本,I can not endure!
结果测试发现,当在动画过程中切换 tabbar 后再切换回来,这个控件会 freeze 在一个中间状态!
尝试在 viewWillAppear
中重新设置控件显示的值,反复测试还是会有这个问题,最后因为发布日期将近,还是去掉了动画效果。