zoukankan      html  css  js  c++  java
  • 多控制器管理练习 -- 私人通讯录

    Main.storyboard

      1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="bb1-yV-W1H">
      3     <dependencies>
      4         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
      5     </dependencies>
      6     <scenes>
      7         <!--Navigation Controller-->
      8         <scene sceneID="Fle-pH-X4o">
      9             <objects>
     10                 <navigationController definesPresentationContext="YES" id="bb1-yV-W1H" sceneMemberID="viewController">
     11                     <navigationBar key="navigationBar" contentMode="scaleToFill" id="Gxr-L7-62g">
     12                         <autoresizingMask key="autoresizingMask"/>
     13                     </navigationBar>
     14                     <connections>
     15                         <segue destination="xJJ-va-odp" kind="relationship" relationship="rootViewController" id="EcX-wk-iso"/>
     16                     </connections>
     17                 </navigationController>
     18                 <placeholder placeholderIdentifier="IBFirstResponder" id="cj9-h5-Qu2" userLabel="First Responder" sceneMemberID="firstResponder"/>
     19             </objects>
     20             <point key="canvasLocation" x="-558" y="306"/>
     21         </scene>
     22         <!--Login View Controller - 欢迎使用私人通讯录-->
     23         <scene sceneID="5uH-cq-Fn6">
     24             <objects>
     25                 <viewController id="xJJ-va-odp" customClass="LWTLoginViewController" sceneMemberID="viewController">
     26                     <layoutGuides>
     27                         <viewControllerLayoutGuide type="top" id="8zC-QD-qe8"/>
     28                         <viewControllerLayoutGuide type="bottom" id="mfz-9r-GPX"/>
     29                     </layoutGuides>
     30                     <view key="view" contentMode="scaleToFill" id="cER-fz-rEn">
     31                         <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
     32                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     33                         <subviews>
     34                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="账号" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MXY-Dd-ipt">
     35                                 <rect key="frame" x="20" y="94" width="34" height="21"/>
     36                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     37                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
     38                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
     39                                 <nil key="highlightedColor"/>
     40                             </label>
     41                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入账号(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="6GH-CK-uLQ">
     42                                 <rect key="frame" x="75" y="90" width="225" height="30"/>
     43                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     44                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
     45                                 <textInputTraits key="textInputTraits"/>
     46                             </textField>
     47                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="密码" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d2H-q9-NMg">
     48                                 <rect key="frame" x="20" y="132" width="34" height="21"/>
     49                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     50                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
     51                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
     52                                 <nil key="highlightedColor"/>
     53                             </label>
     54                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入密码(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="VeK-0O-1rH">
     55                                 <rect key="frame" x="75" y="128" width="225" height="30"/>
     56                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     57                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
     58                                 <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
     59                             </textField>
     60                             <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KmK-PT-aNW">
     61                                 <rect key="frame" x="20" y="166" width="128" height="32"/>
     62                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     63                                 <subviews>
     64                                     <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="记住密码" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uXW-fL-WVe">
     65                                         <rect key="frame" x="0.0" y="6" width="58" height="22"/>
     66                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     67                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
     68                                         <nil key="highlightedColor"/>
     69                                     </label>
     70                                     <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="h9R-jw-hT5">
     71                                         <rect key="frame" x="79" y="1" width="51" height="31"/>
     72                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     73                                         <connections>
     74                                             <action selector="remPwdOnClick:" destination="xJJ-va-odp" eventType="valueChanged" id="939-Lr-mT4"/>
     75                                         </connections>
     76                                     </switch>
     77                                 </subviews>
     78                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
     79                             </view>
     80                             <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FS6-U6-dS4">
     81                                 <rect key="frame" x="172" y="166" width="128" height="32"/>
     82                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     83                                 <subviews>
     84                                     <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="自动登录" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cph-GJ-hQn">
     85                                         <rect key="frame" x="0.0" y="6" width="58" height="22"/>
     86                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     87                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
     88                                         <nil key="highlightedColor"/>
     89                                     </label>
     90                                     <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Fzg-fp-TOm">
     91                                         <rect key="frame" x="79" y="1" width="51" height="31"/>
     92                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
     93                                         <connections>
     94                                             <action selector="autoLoginOnClick:" destination="xJJ-va-odp" eventType="valueChanged" id="YSj-wr-oF9"/>
     95                                         </connections>
     96                                     </switch>
     97                                 </subviews>
     98                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
     99                             </view>
    100                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oTV-1X-kYO">
    101                                 <rect key="frame" x="20" y="206" width="280" height="30"/>
    102                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    103                                 <state key="normal" title="登录">
    104                                     <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    105                                 </state>
    106                                 <connections>
    107                                     <action selector="loginBtnOnClick:" destination="xJJ-va-odp" eventType="touchUpInside" id="i1O-9W-6aq"/>
    108                                 </connections>
    109                             </button>
    110                         </subviews>
    111                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
    112                     </view>
    113                     <navigationItem key="navigationItem" title="欢迎使用私人通讯录" id="MPd-CY-FMs"/>
    114                     <connections>
    115                         <outlet property="LoginBtn" destination="oTV-1X-kYO" id="iFL-jN-T3o"/>
    116                         <outlet property="accountField" destination="6GH-CK-uLQ" id="HCj-fY-mM5"/>
    117                         <outlet property="autoLoginSwitch" destination="Fzg-fp-TOm" id="wXT-ea-waB"/>
    118                         <outlet property="pwdField" destination="VeK-0O-1rH" id="wdi-bO-8Hw"/>
    119                         <outlet property="remPwdSwitch" destination="h9R-jw-hT5" id="PIL-3p-pj2"/>
    120                         <segue destination="yex-bI-OU8" kind="push" identifier="Login2Contact" id="0Gb-Uh-BD2"/>
    121                     </connections>
    122                 </viewController>
    123                 <placeholder placeholderIdentifier="IBFirstResponder" id="JaW-jp-ZSY" userLabel="First Responder" sceneMemberID="firstResponder"/>
    124             </objects>
    125             <point key="canvasLocation" x="-141" y="306"/>
    126         </scene>
    127         <!--Contact Controller-->
    128         <scene sceneID="wwf-DZ-MZT">
    129             <objects>
    130                 <tableViewController id="yex-bI-OU8" customClass="LWTContactController" sceneMemberID="viewController">
    131                     <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="OKw-pu-Z1g">
    132                         <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
    133                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    134                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
    135                         <prototypes>
    136                             <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="contacts" textLabel="Xfb-D6-ws9" detailTextLabel="T5o-wX-lg5" style="IBUITableViewCellStyleValue1" id="ZWc-Js-GHG" customClass="LWTContactCell">
    137                                 <rect key="frame" x="0.0" y="86" width="320" height="44"/>
    138                                 <autoresizingMask key="autoresizingMask"/>
    139                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ZWc-Js-GHG" id="3RG-Ga-Gn4">
    140                                     <rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
    141                                     <autoresizingMask key="autoresizingMask"/>
    142                                     <subviews>
    143                                         <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Xfb-D6-ws9">
    144                                             <rect key="frame" x="15" y="11" width="33" height="21"/>
    145                                             <autoresizingMask key="autoresizingMask"/>
    146                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
    147                                             <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    148                                             <nil key="highlightedColor"/>
    149                                         </label>
    150                                         <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="T5o-wX-lg5">
    151                                             <rect key="frame" x="241" y="11" width="44" height="21"/>
    152                                             <autoresizingMask key="autoresizingMask"/>
    153                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
    154                                             <color key="textColor" red="0.55686274509803924" green="0.55686274509803924" blue="0.57647058823529407" alpha="1" colorSpace="calibratedRGB"/>
    155                                             <nil key="highlightedColor"/>
    156                                         </label>
    157                                     </subviews>
    158                                 </tableViewCellContentView>
    159                                 <connections>
    160                                     <segue destination="LvV-eA-n6e" kind="push" id="hDj-Fr-IxZ"/>
    161                                 </connections>
    162                             </tableViewCell>
    163                         </prototypes>
    164                         <connections>
    165                             <outlet property="dataSource" destination="yex-bI-OU8" id="Gix-qj-Lzk"/>
    166                             <outlet property="delegate" destination="yex-bI-OU8" id="9fp-XG-7Yb"/>
    167                         </connections>
    168                     </tableView>
    169                     <navigationItem key="navigationItem" id="dhn-fG-62U">
    170                         <barButtonItem key="backBarButtonItem" title="返回" id="Sp3-IN-He2"/>
    171                         <barButtonItem key="leftBarButtonItem" title="注销" id="BO2-tb-eyc">
    172                             <connections>
    173                                 <action selector="loginOutBtnOnClick:" destination="yex-bI-OU8" id="HaI-EY-TbG"/>
    174                             </connections>
    175                         </barButtonItem>
    176                         <barButtonItem key="rightBarButtonItem" style="plain" systemItem="add" id="lfr-es-wMK">
    177                             <connections>
    178                                 <segue destination="Nua-d5-bto" kind="push" id="zU6-Am-7I0"/>
    179                             </connections>
    180                         </barButtonItem>
    181                     </navigationItem>
    182                 </tableViewController>
    183                 <placeholder placeholderIdentifier="IBFirstResponder" id="tye-fg-0QE" userLabel="First Responder" sceneMemberID="firstResponder"/>
    184             </objects>
    185             <point key="canvasLocation" x="283" y="306"/>
    186         </scene>
    187         <!--Edit View Controller - 查看联系人-->
    188         <scene sceneID="Fs8-48-OTY">
    189             <objects>
    190                 <viewController id="LvV-eA-n6e" customClass="LWTEditViewController" sceneMemberID="viewController">
    191                     <layoutGuides>
    192                         <viewControllerLayoutGuide type="top" id="H3D-Bq-Ki8"/>
    193                         <viewControllerLayoutGuide type="bottom" id="MbN-DL-CL5"/>
    194                     </layoutGuides>
    195                     <view key="view" contentMode="scaleToFill" id="Wn2-Vv-nVA">
    196                         <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
    197                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    198                         <subviews>
    199                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="姓名" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7aH-O7-WI9">
    200                                 <rect key="frame" x="20" y="88" width="34" height="21"/>
    201                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    202                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
    203                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    204                                 <nil key="highlightedColor"/>
    205                             </label>
    206                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入姓名(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="kfW-LE-IXq">
    207                                 <rect key="frame" x="75" y="84" width="225" height="30"/>
    208                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    209                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
    210                                 <textInputTraits key="textInputTraits"/>
    211                             </textField>
    212                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="电话" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="afp-hh-BYS">
    213                                 <rect key="frame" x="20" y="126" width="34" height="21"/>
    214                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    215                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
    216                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    217                                 <nil key="highlightedColor"/>
    218                             </label>
    219                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入电话(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="K5Q-nW-F1w">
    220                                 <rect key="frame" x="75" y="122" width="225" height="30"/>
    221                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    222                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
    223                                 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
    224                             </textField>
    225                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Htd-s7-WEM">
    226                                 <rect key="frame" x="20" y="160" width="280" height="30"/>
    227                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    228                                 <state key="normal" title="保存">
    229                                     <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    230                                 </state>
    231                                 <connections>
    232                                     <action selector="addBtnOnClick:" destination="Nua-d5-bto" eventType="touchUpInside" id="uF9-jY-CFi"/>
    233                                     <action selector="saveBtnOnClick:" destination="LvV-eA-n6e" eventType="touchUpInside" id="Lgd-F3-3xf"/>
    234                                 </connections>
    235                             </button>
    236                         </subviews>
    237                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
    238                     </view>
    239                     <navigationItem key="navigationItem" title="查看联系人" id="dIa-so-BIH">
    240                         <barButtonItem key="rightBarButtonItem" title="编辑" id="cvr-Zf-Ai7">
    241                             <connections>
    242                                 <action selector="editBtnOnClick:" destination="LvV-eA-n6e" id="w99-PO-cVu"/>
    243                             </connections>
    244                         </barButtonItem>
    245                     </navigationItem>
    246                     <connections>
    247                         <outlet property="nameField" destination="kfW-LE-IXq" id="rzU-8S-05S"/>
    248                         <outlet property="phoneField" destination="K5Q-nW-F1w" id="sGp-tJ-cUx"/>
    249                         <outlet property="saveBtn" destination="Htd-s7-WEM" id="Na9-FM-5gc"/>
    250                     </connections>
    251                 </viewController>
    252                 <placeholder placeholderIdentifier="IBFirstResponder" id="ppP-zB-Rq3" userLabel="First Responder" sceneMemberID="firstResponder"/>
    253             </objects>
    254             <point key="canvasLocation" x="767" y="696"/>
    255         </scene>
    256         <!--Add View Controller - 添加联系人-->
    257         <scene sceneID="2gI-cH-9qU">
    258             <objects>
    259                 <viewController id="Nua-d5-bto" customClass="LWTAddViewController" sceneMemberID="viewController">
    260                     <layoutGuides>
    261                         <viewControllerLayoutGuide type="top" id="TQR-wU-FwU"/>
    262                         <viewControllerLayoutGuide type="bottom" id="EI6-0N-7Tn"/>
    263                     </layoutGuides>
    264                     <view key="view" contentMode="scaleToFill" id="vgB-NY-FXi">
    265                         <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
    266                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    267                         <subviews>
    268                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="姓名" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EB4-3X-okK">
    269                                 <rect key="frame" x="20" y="85" width="34" height="21"/>
    270                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    271                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
    272                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    273                                 <nil key="highlightedColor"/>
    274                             </label>
    275                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入姓名(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Yeq-UY-L2m">
    276                                 <rect key="frame" x="75" y="81" width="225" height="30"/>
    277                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    278                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
    279                                 <textInputTraits key="textInputTraits"/>
    280                             </textField>
    281                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="电话" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nwf-hw-EOj">
    282                                 <rect key="frame" x="20" y="123" width="34" height="21"/>
    283                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    284                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
    285                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    286                                 <nil key="highlightedColor"/>
    287                             </label>
    288                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="请输入电话(*)" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fH7-lR-Oxw">
    289                                 <rect key="frame" x="75" y="119" width="225" height="30"/>
    290                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    291                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
    292                                 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
    293                             </textField>
    294                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GCp-Vw-ry9">
    295                                 <rect key="frame" x="20" y="157" width="280" height="30"/>
    296                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    297                                 <state key="normal" title="添加">
    298                                     <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    299                                 </state>
    300                                 <connections>
    301                                     <action selector="addBtnOnClick:" destination="Nua-d5-bto" eventType="touchUpInside" id="cfe-4i-VN1"/>
    302                                 </connections>
    303                             </button>
    304                         </subviews>
    305                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
    306                     </view>
    307                     <navigationItem key="navigationItem" title="添加联系人" id="gip-az-pqS"/>
    308                     <connections>
    309                         <outlet property="addBtn" destination="GCp-Vw-ry9" id="5oQ-zP-hB9"/>
    310                         <outlet property="nameField" destination="Yeq-UY-L2m" id="eMA-zX-O2L"/>
    311                         <outlet property="phoneField" destination="fH7-lR-Oxw" id="7tG-KJ-DCE"/>
    312                     </connections>
    313                 </viewController>
    314                 <placeholder placeholderIdentifier="IBFirstResponder" id="9sC-Tm-Nzk" userLabel="First Responder" sceneMemberID="firstResponder"/>
    315             </objects>
    316             <point key="canvasLocation" x="767" y="-94"/>
    317         </scene>
    318     </scenes>
    319     <simulatedMetricsContainer key="defaultSimulatedMetrics">
    320         <simulatedStatusBarMetrics key="statusBar"/>
    321         <simulatedOrientationMetrics key="orientation"/>
    322         <simulatedScreenMetrics key="destination"/>
    323     </simulatedMetricsContainer>
    324 </document>
    View Code

    LWTLoginViewController.h

    #import <UIKit/UIKit.h>
    
    @interface LWTLoginViewController : UIViewController
    
    @end
    View Code

    LWTLoginViewController.m

      1 //
      2 //  LWTLoginViewController.m
      3 //  多控制器管理联系 -- 私人通讯录
      4 //
      5 //  Created by apple on 14-6-7.
      6 //  Copyright (c) 2014年 lwt. All rights reserved.
      7 //
      8 
      9 #import "LWTLoginViewController.h"
     10 #import "MBProgressHUD+NJ.h"
     11 
     12 #define KLWTAccount @"account"
     13 #define KLWTPwd @"pwd"
     14 #define KLWTRemPwd @"remPwd"
     15 #define KLWTAutoLogin @"autoLogin"
     16 
     17 @interface LWTLoginViewController () <UITextFieldDelegate>
     18 /**
     19  *  账号输入框
     20  */
     21 @property (weak, nonatomic) IBOutlet UITextField *accountField;
     22 /**
     23  *  密码输入框
     24  */
     25 @property (weak, nonatomic) IBOutlet UITextField *pwdField;
     26 /**
     27  *  记住密码Switch
     28  */
     29 @property (weak, nonatomic) IBOutlet UISwitch *remPwdSwitch;
     30 /**
     31  *  自动登录Switch
     32  */
     33 @property (weak, nonatomic) IBOutlet UISwitch *autoLoginSwitch;
     34 /**
     35  *  登录按钮
     36  */
     37 @property (weak, nonatomic) IBOutlet UIButton *LoginBtn;
     38 /**
     39  *  监听点击记住密码
     40  */
     41 - (IBAction)remPwdOnClick:(UISwitch *)sender;
     42 /**
     43  *  监听点击自动登录
     44  */
     45 - (IBAction)autoLoginOnClick:(UISwitch *)sender;
     46 /**
     47  *  监听点击登录按钮
     48  */
     49 - (IBAction)loginBtnOnClick:(UIButton *)sender;
     50 
     51 @end
     52 
     53 @implementation LWTLoginViewController
     54 
     55 
     56 - (void)viewDidLoad
     57 {
     58     [super viewDidLoad];
     59     
     60     // 监听文本输入框的改变
     61     // 拿到通知中心
     62     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
     63     // 注册监听
     64     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.accountField];
     65     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdField];
     66     
     67     // 回显数据(读取保存的偏好设置信息)
     68     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     69     // 设置账号
     70     self.accountField.text = [defaults objectForKey:KLWTAccount];
     71     // 判断是否需要记住密码
     72     [self.remPwdSwitch setOn:[defaults boolForKey:KLWTRemPwd] animated:YES];
     73     if (self.remPwdSwitch.isOn) {
     74         // 设置密码
     75         self.pwdField.text = [defaults objectForKey:KLWTPwd];
     76         self.LoginBtn.enabled = YES;
     77     }
     78     [self.autoLoginSwitch setOn:[defaults boolForKey:KLWTAutoLogin] animated:YES];
     79     if (self.autoLoginSwitch.isOn) {
     80         // 自动登录
     81         [self loginBtnOnClick:nil];
     82     }
     83 }
     84 
     85 - (void)dealloc
     86 {
     87     [[NSNotificationCenter defaultCenter] removeObserver:self];
     88 }
     89 
     90 - (void)textChange
     91 {
     92     self.LoginBtn.enabled = (self.accountField.text.length >0 && self.pwdField.text.length > 0);
     93 }
     94 
     95 - (IBAction)remPwdOnClick:(UISwitch *)sender {
     96     // 判断是否记住密码
     97     if (self.remPwdSwitch.isOn == NO) {
     98         // 如果取消记住密码取消自动登录
     99         [self.autoLoginSwitch setOn:NO animated:YES];
    100     }
    101 }
    102 
    103 - (IBAction)autoLoginOnClick:(UISwitch *)sender {
    104     // 判断是否自动登录
    105     if (self.autoLoginSwitch.isOn) {
    106         // 如果自动登录就记住密码
    107         [self.remPwdSwitch setOn:YES animated:YES];
    108     }
    109 }
    110 
    111 - (IBAction)loginBtnOnClick:(UIButton *)sender {
    112     // 添加蒙版禁止用户操作, 并且提示用户正在登录
    113     [MBProgressHUD showMessage:@"登录中ing..."];
    114     
    115     
    116     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    117         // 移除蒙版
    118         [MBProgressHUD hideHUD];
    119         
    120         if ([self.accountField.text isEqualToString:@"lwt"] && [self.pwdField.text isEqualToString:@"123"]) {
    121             // 登录成功后移除蒙版
    122             [MBProgressHUD showSuccess:@"登录成功"];
    123             
    124             // 如果正确,跳转到联系人界面(手动执行segue)
    125             [self performSegueWithIdentifier:@"Login2Contact" sender:nil];
    126             
    127             // 保存用户数据
    128             NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    129             [defaults setObject:self.accountField.text forKey:KLWTAccount];
    130             [defaults setObject:self.pwdField.text forKey:KLWTPwd];
    131             [defaults setBool:self.remPwdSwitch.isOn forKey:KLWTRemPwd];
    132             [defaults setBool:self.autoLoginSwitch.isOn forKey:KLWTAutoLogin];
    133             
    134             [defaults synchronize];
    135             
    136         }else
    137         {
    138             [MBProgressHUD showError:@"账号或密码错误"];
    139         }
    140     });
    141 }
    142 
    143 // 在segue跳转之前调用, 会传入performSegueWithIdentifier方法创建好的segue对象
    144 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    145 {
    146     UIViewController *contact = segue.destinationViewController;
    147     contact.title = [NSString stringWithFormat:@"%@ 的联系人列表", self.accountField.text];
    148 
    149 }
    150 @end
    View Code

    LWTContactController.h

    #import <UIKit/UIKit.h>
    
    @interface LWTContactController : UITableViewController
    
    @end
    View Code

    LWTContactController.m

      1 //
      2 //  LWTContactController.m
      3 //  多控制器管理联系 -- 私人通讯录
      4 //
      5 //  Created by apple on 14-6-7.
      6 //  Copyright (c) 2014年 lwt. All rights reserved.
      7 //
      8 
      9 #import "LWTContactController.h"
     10 #import "LWTContactCell.h"
     11 #import "LWTContactModel.h"
     12 #import "LWTAddViewController.h"
     13 #import "LWTEditViewController.h"
     14 
     15 #define KARCPath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"list.arc"]
     16 
     17 @interface LWTContactController () <UIActionSheetDelegate, LWTAddViewControllerDelegate, LWTEditViewControllerDelegate>
     18 /**
     19  *  点击注销登录
     20  */
     21 - (IBAction)loginOutBtnOnClick:(UIBarButtonItem *)sender;
     22 /**
     23  *  保存所有用户数据
     24  */
     25 @property (nonatomic, strong) NSMutableArray *contacts;
     26 
     27 @end
     28 
     29 @implementation LWTContactController
     30 
     31 #pragma mark - 懒加载
     32 - (NSMutableArray *)contacts
     33 {
     34     if (!_contacts) {
     35         // 从文件中读取数组
     36         _contacts =  [NSKeyedUnarchiver unarchiveObjectWithFile:KARCPath];
     37         // 如果第一次启动没有文件,就创建一个空的数组用于保存数据
     38         if (_contacts == nil) {
     39             _contacts = [NSMutableArray array];
     40         }
     41     }
     42     return _contacts;
     43 }
     44 
     45 
     46 - (void)viewDidLoad
     47 {
     48     [super viewDidLoad];
     49     
     50     self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
     51 }
     52 
     53 // 无论是手动类型的segue还是自动类型的segue, 在跳转之前都会执行该方法
     54 // 控制器跳转之前(执行segue之前)执行
     55 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
     56 {
     57     // 取出目标控制器
     58     UIViewController *vc = segue.destinationViewController;
     59     
     60     // 判断目标控制器是添加还是编辑
     61     if ([vc isKindOfClass:[LWTAddViewController class]]) {
     62         LWTAddViewController *addVC = (LWTAddViewController *)vc;
     63         // 设置代理
     64         addVC.delegate = self;
     65     }else if ([vc isKindOfClass:[LWTEditViewController class]])
     66     {
     67         LWTEditViewController *editVC = (LWTEditViewController *)vc;
     68         // 设置代理
     69         editVC.delegate = self;
     70         // 通过tableview获取被点击的行号
     71         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
     72         // 赋值模型
     73         editVC.contact = self.contacts[indexPath.row];
     74     }
     75 
     76 }
     77 
     78 #pragma mark - 数据源方法
     79 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     80 {
     81     return self.contacts.count;
     82 }
     83 
     84 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     85 {
     86     // 创建cell
     87     LWTContactCell *cell = [LWTContactCell contactCellWithTableView:tableView];
     88     // 设置模型
     89     LWTContactModel *contact = self.contacts[indexPath.row];
     90     cell.contact = contact;
     91     //cell.textLabel.text = contact.name;
     92     //cell.detailTextLabel.text = contact.phone;
     93     // 返回cell
     94     return cell;
     95 }
     96 
     97 - (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
     98 {
     99      // 删除数据
    100     [self.contacts removeObjectAtIndex:indexPath.row];
    101     // 更新保存的数据
    102     [NSKeyedArchiver archiveRootObject:self.contacts toFile:KARCPath];
    103     
    104     // 刷新表格
    105     [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
    106 }
    107 
    108 #pragma mark - LWTAddViewControllerDelegate
    109 - (void)addViewControllerAddBtnClick:(LWTAddViewController *)addViewCOntroller andContact:(LWTContactModel *)contact
    110 {
    111     //
    112     [self.contacts addObject:contact];
    113     // 更新保存的数据
    114     [NSKeyedArchiver archiveRootObject:self.contacts toFile:KARCPath];
    115     
    116     [self.tableView reloadData];
    117     
    118     
    119 }
    120 #pragma mark - LWTEditViewControllerDelegate
    121 - (void)editViewControllerSaveBtnClick:(LWTEditViewController *)editViewController andContact:(LWTContactModel *)contact
    122 {
    123     // 更新保存的数据
    124     [NSKeyedArchiver archiveRootObject:self.contacts toFile:KARCPath];
    125     // 刷新表格
    126     [self.tableView reloadData];
    127 }
    128 
    129 - (IBAction)loginOutBtnOnClick:(UIBarButtonItem *)sender {
    130     
    131     UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确认退出吗?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确认" otherButtonTitles: nil];
    132     [sheet showInView:self.view];
    133 }
    134 #pragma mark - UIActionSheetDelegate
    135 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    136 {
    137     if (0 == buttonIndex) {
    138         [self.navigationController popToRootViewControllerAnimated:YES];
    139     }
    140 }
    141 
    142 @end
    View Code

    LWTAddViewController.h

    #import <UIKit/UIKit.h>
    @class LWTAddViewController, LWTContactModel;
    
    @protocol LWTAddViewControllerDelegate <NSObject>
    
    @optional
    - (void)addViewControllerAddBtnClick : (LWTAddViewController *)addViewCOntroller andContact : (LWTContactModel *)contact;
    
    @end
    
    @interface LWTAddViewController : UIViewController
    
    @property (nonatomic, strong) id<LWTAddViewControllerDelegate> delegate;
    
    @end
    View Code

    LWTAddViewController.m

     1 //
     2 //  LWTAddViewController.m
     3 //  多控制器管理联系 -- 私人通讯录
     4 //
     5 //  Created by apple on 14-6-7.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import "LWTAddViewController.h"
    10 #import "LWTContactModel.h"
    11 
    12 @interface LWTAddViewController ()
    13 /**
    14  *  姓名输入框
    15  */
    16 @property (weak, nonatomic) IBOutlet UITextField *nameField;
    17 /**
    18  *  电话输入框
    19  */
    20 @property (weak, nonatomic) IBOutlet UITextField *phoneField;
    21 /**
    22  *  添加按钮
    23  */
    24 @property (weak, nonatomic) IBOutlet UIButton *addBtn;
    25 /**
    26  *  点击添加按钮
    27  */
    28 - (IBAction)addBtnOnClick:(UIButton *)sender;
    29 
    30 @end
    31 
    32 @implementation LWTAddViewController
    33 
    34 - (void)viewDidLoad
    35 {
    36     // 监听文本输入框的改变
    37     // 拿到通知中心
    38     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    39     // 注册监听
    40     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
    41     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.phoneField];
    42 
    43 }
    44 
    45 - (void)dealloc
    46 {
    47     [[NSNotificationCenter defaultCenter] removeObserver:self];
    48 }
    49 
    50 - (void)textChange
    51 {
    52     self.addBtn.enabled = (self.nameField.text.length >0 && self.phoneField.text.length > 0);
    53 }
    54 
    55 - (void)viewDidAppear:(BOOL)animated
    56 {
    57     // 弹出键盘
    58     [self.nameField becomeFirstResponder];
    59 }
    60 
    61 - (IBAction)addBtnOnClick:(UIButton *)sender {
    62     // 移除栈顶控制器
    63     [self.navigationController popViewControllerAnimated:YES];
    64     
    65     // 获取用户输入的姓名和电话
    66     LWTContactModel *contact = [[LWTContactModel alloc] init];
    67     contact.name = self.nameField.text;
    68     contact.phone = self.phoneField.text;
    69     
    70     // 传递数据给联系人列表
    71     if ([self.delegate respondsToSelector:@selector(addViewControllerAddBtnClick:andContact:)]) {
    72         [self.delegate addViewControllerAddBtnClick:self andContact:contact];
    73     }
    74 }
    75 @end
    View Code

    LWTEditViewController.h

    #import <UIKit/UIKit.h>
    @class LWTContactModel, LWTEditViewController;
    
    @protocol LWTEditViewControllerDelegate <NSObject>
    
    @optional
    - (void)editViewControllerSaveBtnClick : (LWTEditViewController *)editViewController andContact : (LWTContactModel *)contact;
    
    @end
    
    @interface LWTEditViewController : UIViewController
    
    @property (nonatomic, strong) id<LWTEditViewControllerDelegate> delegate;
    /**
     *  用于接收联系人列表传递过来的数据
     */
    @property (nonatomic, strong) LWTContactModel *contact;
    
    @end
    View Code

    LWTEditViewController.m

      1 //
      2 //  LWTEditViewController.m
      3 //  多控制器管理联系 -- 私人通讯录
      4 //
      5 //  Created by apple on 14-6-7.
      6 //  Copyright (c) 2014年 lwt. All rights reserved.
      7 //
      8 
      9 #import "LWTEditViewController.h"
     10 #import "LWTContactModel.h"
     11 
     12 @interface LWTEditViewController ()
     13 
     14 @property (weak, nonatomic) IBOutlet UITextField *nameField;
     15 @property (weak, nonatomic) IBOutlet UITextField *phoneField;
     16 @property (weak, nonatomic) IBOutlet UIButton *saveBtn;
     17 
     18 /**
     19  *  保存按钮点击事件
     20  */
     21 - (IBAction)saveBtnOnClick:(UIButton *)sender;
     22 /**
     23  *  编辑按钮点击事件
     24  */
     25 - (IBAction)editBtnOnClick:(UIBarButtonItem *)sender;
     26 
     27 @end
     28 
     29 @implementation LWTEditViewController
     30 
     31 - (void)viewDidLoad
     32 {
     33     // 监听文本输入框的改变
     34     // 拿到通知中心
     35     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
     36     // 注册监听
     37     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
     38     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.phoneField];
     39     
     40     // 设置姓名文本输入框
     41     self.nameField.text = self.contact.name;
     42     // 设置电话文本输入框
     43     self.phoneField.text = self.contact.phone;
     44     
     45 }
     46 
     47 - (void)dealloc
     48 {
     49     [[NSNotificationCenter defaultCenter] removeObserver:self];
     50 }
     51 
     52 - (void)textChange
     53 {
     54     self.saveBtn.enabled = (self.nameField.text.length >0 && self.phoneField.text.length > 0);
     55 }
     56 
     57 - (IBAction)saveBtnOnClick:(UIButton *)sender {
     58     // 移除栈顶控制器
     59     [self.navigationController popViewControllerAnimated:YES];
     60     // 修改模型数据
     61     self.contact.name = self.nameField.text;
     62     self.contact.phone = self.phoneField.text;
     63     // 通知代理
     64     if ([self.delegate respondsToSelector:@selector(editViewControllerSaveBtnClick:andContact:)]) {
     65         [self.delegate editViewControllerSaveBtnClick:self andContact:self.contact];
     66     }
     67 }
     68 
     69 - (IBAction)editBtnOnClick:(UIBarButtonItem *)sender {
     70     if (self.nameField.enabled) {
     71         // 当前是编辑状态
     72         // 让文本输入框不可以交互
     73         self.nameField.enabled = NO;
     74         self.phoneField.enabled = NO;
     75         // 隐藏保存按钮
     76         self.saveBtn.hidden = YES;
     77         // 修改按钮标题
     78         sender.title = @"编辑";
     79         // 让键盘消失
     80         [self.view endEditing:YES];
     81         
     82         // 还原数据
     83         self.nameField.text = self.contact.name;
     84         self.phoneField.text = self.contact.phone;
     85     }else
     86     {
     87         // 当前是不可以编辑状态
     88         // 让文本输入框可以交互
     89         self.nameField.enabled = YES;
     90         self.phoneField.enabled = YES;
     91         // 显示保存按钮
     92         self.saveBtn.hidden = NO;
     93         // 修改按钮标题
     94         sender.title = @"取消";
     95         // 弹出键盘
     96         [self.phoneField becomeFirstResponder];
     97         
     98         
     99     }
    100 }
    101 @end
    View Code

    LWTContactModel.h

    #import <Foundation/Foundation.h>
    
    @interface LWTContactModel : NSObject <NSCoding>
    
    @property (nonatomic, copy) NSString *name;
    @property (nonatomic, copy) NSString *phone;
    
    @end
    View Code

    LWTContactModel.m

    //
    //  LWTContactModel.m
    //  多控制器管理联系 -- 私人通讯录
    //
    //  Created by apple on 14-6-8.
    //  Copyright (c) 2014年 lwt. All rights reserved.
    //
    
    #import "LWTContactModel.h"
    #define KName @"name"
    #define KPhone @"phone"
    
    @implementation LWTContactModel
    
     - (void)encodeWithCoder:(NSCoder *)aCoder
    {
        [aCoder encodeObject:self.name forKey:KName];
        [aCoder encodeObject:self.phone forKey:KPhone];
    
    }
    
    - (id)initWithCoder:(NSCoder *)aDecoder
    {
        if (self = [super init]) {
            self.name = [aDecoder decodeObjectForKey:KName];
            self.phone = [aDecoder decodeObjectForKey:KPhone];
        }
        return self;
    }
    
    
    
    @end
    View Code

    LWTContactCell.h

    #import <UIKit/UIKit.h>
    @class LWTContactModel;
    
    @interface LWTContactCell : UITableViewCell
    
    + (instancetype)contactCellWithTableView : (UITableView *)tableView;
    
    @property (nonatomic, strong) LWTContactModel *contact;
    
    @end
    View Code

    LWTContactCell.m

     1 //
     2 //  LWTContactCell.m
     3 //  多控制器管理联系 -- 私人通讯录
     4 //
     5 //  Created by apple on 14-6-8.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import "LWTContactCell.h"
    10 #import "LWTContactModel.h"
    11 
    12 @interface LWTContactCell ()
    13 @property (nonatomic, weak) UIView *divider;
    14 
    15 @end
    16 
    17 @implementation LWTContactCell
    18 
    19 + (instancetype)contactCellWithTableView:(UITableView *)tableView
    20 {
    21     NSString *identfier = @"contacts";
    22     LWTContactCell *cell = [tableView dequeueReusableCellWithIdentifier:identfier];
    23     return cell;
    24 }
    25 
    26 - (void)setContact:(LWTContactModel *)contact
    27 {
    28     
    29     _contact = contact;
    30     // 设置名称
    31     self.textLabel.text = _contact.name;
    32     // 设置电话
    33     self.detailTextLabel.text = _contact.phone;
    34 }
    35 
    36 - (void)awakeFromNib
    37 {
    38     // 创建分割线添加到cell中
    39     UIView *view = [[UIView alloc] init];
    40     view.backgroundColor = [UIColor grayColor];
    41     view.alpha = 0.5;
    42     
    43     self.divider = view;
    44     
    45     [self.contentView addSubview:view];
    46     
    47 }
    48 
    49 - (void)layoutSubviews
    50 {
    51     [super layoutSubviews];
    52     CGFloat x = 0;
    53     CGFloat w = self.bounds.size.width;
    54     CGFloat h = 1;
    55     CGFloat y = self.bounds.size.height - h;
    56     
    57     // 设置分割线的frame
    58     self.divider.frame = CGRectMake(x, y, w, h);
    59 }
    60 
    61 @end
    View Code
  • 相关阅读:
    动态生成java、动态编译、动态加载
    boostrap标签
    Java后端WebSocket的Tomcat实现
    编程过程与规范
    敏捷开发过程
    软件过程模型
    软件过程
    ISO9126 质量模型
    手机淘宝架构演化实践
    蒋勋:知识分子应具备怎样的美学修养
  • 原文地址:https://www.cnblogs.com/wentianblog/p/3776265.html
Copyright © 2011-2022 走看看