標籤:
我的學習日誌003:“文字長度--button與label的互動”程式
交代一下我做程式的工具:mac os x虛擬機器10.9.3 Xcode6 百度^-^ 參考書iPhone30天精通(本書已經過時,但是還有一定的參考價值,可以引導正確的學習方向)。
沒什麼新的知識點,直接放步驟和代碼。
XCode建立SingleView程式,viewControllor.h代碼如下:
#import <UIKit/UIKit.h>
#import<Foundation/Foundation.h>
@interface viewController:UIViewController{
IBOutlet UITextField *textField;
IBOutlet UILabel *label;
}
@property(nonatomic,retain) UITextField *textField;
@property(nonatomic,retain) UILabel *label;
-(IBAction)Click;
@end
viewControllor.m檔案
#import "viewController.h"
@implementation viewController
@systhesize textField,label;
-(void)viewDidLoad{
[super viewDidLoad];
label.text = @"請輸入文字";
}
-(IBAction)Click{
//這個方法是每一次點擊button的時候調用的
int count = textField.text.length;
if(count>20){
label.text = @"輸入的含空格和標點符號在內的文字超出20個";
textField.text = NULL;
}
else{
NSString *result = [NSString stringWithFormat:@"輸入的文字個數為%d",count];
label.text = result;
textField.text = NULL;
}
}
-(void)didReceiveMemoryWarning{
[super didReceivedMemoryWarning];
}
storyboared處理:
首先要建立textField,button,label控制項,因為前面的代碼已經建立了這幾個控制項的對象了,然後選分別中每一個控制項,按住ctrl鍵,滑鼠左鍵拖向.h檔案裡面的相應的對象。
運行就OK了。這一步可能有不懂得,直接,看圖自己操作就應該可以了,不會這種方法的注意圖中的細節。
說一下我自己遇到的問題與不理解的地方:遇到的問題:
1.啟動並執行時候遇到警告:The simulator can‘t be launched.....大概就是說我模擬器別的程式還用著呢,我怎麼可以再運行別的程式呢。這種時候只要強制關一下XCode就可以了,
強制關閉快速鍵是commend+Q(虛擬機器沒有commend按鍵,win鍵代替即可)。
2.我在寫viewController.h檔案的時候忘了加上"#import<Foundation/Foundation.h>"這句話,導致我的程式出現“Thread1:signalSIGABRT...”這樣的警告,所以以後寫程式的時候要細心。
3.在開啟程式的時候XCode還警告我“No signing identity dound”這是一個簽名警告,意思就是沒有簽名標識。如果是用模擬器調程式的話沒有關係,可以不用管它。
待解決的知識點:
@prperty與@systhesize
我在我的第二篇日誌裡面總結了一下,但是現在看來,還是太菜。http://blog.csdn.net/v7595v/article/details/46833209
現在只總結@prperty與@systhesize,貪多嚼不爛,如下:
Objective-C語言關鍵詞,與@synthesize配對使用。xcode4.5以及以後的版本,@synthesize可以省略下面以 Person 類為例:在. h 檔案中:@interface Person : NSObject{NSString * _name;NSString * _sex;NSInteger _age;}@property NSString * name;@property NSString * sex;@property NSInteger age;表示聲明了三個屬性: name,sex,age, 預設產生3個對應的 setter 和 getter 方法在. m 檔案中:@implementation Person@synthesize name = _name;@synthesize sex = _sex;@synthesize age = _age;@end表示實現3個 setter 和 getter 方法,其中 name = _name 表示說在 getter 和 setter 方法中操作的執行個體變數是_name,如果省略了_name,_age,_sex, 那麼會在. h 檔案中產生同名的執行個體變數 name,sex,age(注意:這裡並沒有底線),此時產生的 setter 和 getter 方法所操作的執行個體變數是 name,sex,age, 所以_name,_sex,_age 並沒有被操作.在 ios5.0後,@synthesize也可以省略不寫,此時在. h 檔案中唯寫@ property 即可,編譯器會自動產生相應的執行個體變數,執行個體變數的名字是屬性名稱前加底線.
這是我在百度百科copy過來的資料,按照它的說法的話,我就可以去掉viewController.h檔案裡面的@interface{}裡面定義的執行個體變數,同時去掉@systhesize,唯寫@property就可以了。But,去掉了@systhesize雖然沒關係,但是去掉@interface{}裡面的執行個體變數之後,用ctrl無法將storyboard和.h檔案裡面的@property相關聯。所以只能加上@interface{}裡面定義的執行個體變數。還有一點,我加入的執行個體變數是與@property修飾的變數名字是相同的,沒有用"_"去區分,然而也沒有錯誤,那我便暫時先按這種方便的方式去寫代碼。
IB 就是Interface Builed:
書上和網上總是說IB就是InterfaceBuiled,關於IBAction和IBOutlet我已經在我程式日誌的第一篇裡面解決了這一問題,http://blog.csdn.net/v7595v/article/details/46831265
什麼是InterfaceBuiled?
看了百度百科http://baike.baidu.com/link?url=WUPoCb4zLKQuhj8NB46slu4phwAxGc0v56FyahESMEDkViA833E3zZQqUyqI-NULGwZHd-3sWuTziY3DCJqbea
IB再深究已無意義,瞭解一下作罷。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
程式日誌--ios“文字長度--button與label的互動”程式