プロジェクトに関する知識点:カスタムUItabar エージェントイベント(エージェントメソッドをクリックして応答) UInavigationController背景図を設定する2つの方法+(void)loadメソッドプログラムが起動するとが呼び出される.
+(void)initializeメソッド現在のクラスまたはそのサブクラスが初めて使用されたときにが呼び出されます.
//
+(void)load
{
}
//
+(void)initialize
{
//
UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:self, nil];
[bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
}
//
XCNavigationController *nav = [[XCNavigationController alloc]initWithRootViewController:vc];
// // ,
// [nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];
// [self addChildViewController:nav];
//@property分類でget,setメソッドの宣言のみが生成される場合、メンバー属性は生成されません
imageWithRenderingMode:U I I I I m a g e R e nderingModeAlwaysOriginalデフォルトのピクチャがをレンダリングしていないことを示します.
コードとstoryboardを組み合わせてページをロードし、ジャンプを実現する.
カスタムbuttonのスタイルをピクチャのxに変更すると、titleの位置はピクチャxの後ろにあり、詳細はxctitleView を参照する.
UIButtonのピクチャストレッチは純粋なコードでしか書けず、UIImAageViewだけがstoryBoardでを実現できる
プロジェクトを引き継ぐときは、書くプロジェクトの機能をカスタム導出クラスに類似して書いたほうがいいです.これにより、後で製品マネージャが製品の修正を提出し、大量の重複作業を節約することができます.例えばストレージクラスを書くと、システムのNSUserDefaultsを直接使うことができますが、プロダクトマネージャがデータエリアsqliteを使うと言ったら.では、これは無駄ではありません.クラスを定義したほうがいいです.例えば、データをこのクラスに保存することができます.今NSUserDefaultsを使っても、明日SQLiteを交換しても、それは私たちが書いたクラスを継承するのに便利です.(詳細はToolsツールクラス)は、2つの方式のナビゲーション制御のleftボタン1をカスタマイズする.最初のカスタムuibarbuttonitemですが、この方法ではナビゲーション制御のサイドスライドが無効になります.ナビゲーションコントローラのジェスチャーエージェントをnilに設定する必要があります.2.2番目にbarの色を設定し、字の位置を負数の位置に置く.
tableviewのパッケージ
1.まずデータモデルのパッケージングはtableviewのsectionとindepathを直接考慮する.row操作はコードを混乱させ、後期にメンテナンスしにくいようにして、cellの各スタイルが入ったデータモデルクラスを作成しました. は、データモデルを格納する配列を作成します.モデルのデータを配列に配置します. 2.cellのパッケージまずcellリサイクルをカプセル化する.
+(instancetype)cellWithTableView:(UITableView *)tableView { static NSString *cellID = @"cell"; XCSettingItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; if (cell ==nil) { cell = [[XCSettingItemCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellID]; } return cell; } 3.データモデルのギズモ各cellの後ろには小さなコントロールがあり、cellに直接追加してもよくないので、継承データモデルのクラスを2つ書きたいと思っています.そして、データモデルの1つはArrowで、1つはswitchです.次に、異なるグループに異なるarrow、またはswitchを使用させます.最後にcellの中でarrowかswitch かを判断します.
4.データモデルにblock を用いる
モデルにblockを追加するとarrowもswitchもデータモデルクラスを継承するので、属性も継承されます.そのまま使えばいい、didselectTable Viewメソッドで選択した行のブロックを取得すればいい-(void)loadViewメソッドの役割は、UIViewControllerのViewを作成することです.loadViewを呼び出し、viewdidload を呼び出します.
helpページのtextlabelはロードされたbundleのjsonファイルで、ロードされたデータは辞書に入れて、それから辞書回転モデルでモデルを取り出します.ここに注意点があります.kvcを使うと、idキーワードがありますが、ocではid intなどの特殊な文字列は使用できませんので、kvcを使うと、kvcメソッドを書き換える必要があります. - (void)setValue:(nullable id)value forKey:(NSString *)key;キーの値にidが含まれているかどうかを判断し、含まれている場合は[self setValue:value forKey:@ID];含まない場合は[super setValue:value forKey:key];方法 ocとjsのインタラクション:はwebViewを使用する必要があり、Webページをロードするときにしかできません. -(void)webViewDidFinishLoad:(UIWebView *)webView XCBasicViewControlクラス XCBasicViewControllerというクラスにtableviewのスタイルがあり、XCBasicViewControllerページとの差が少ない場合は直接継承することができます.これも、一部のtableviewがデータソースと他の方法を設定していない理由で、親がすでにやっているだけです. (demo)[https://github.com/liuxingchen930831/UI-21-LotteryProject-02]