近在學習<objective-c編程>這本書,根據書中的教程編寫了這個簡單Ios小程序iTahDoodle.這是一個簡單的任務管理程序.可以通過"Insert"按鈕來插入.後通過查閱官方文檔,增加了delete的功能.
iTahDoodle共應用到了四個UI控件:兩個Button分別用來插入,刪除,一個TextField用來輸入任務,一個TableView來顯示任務列表.iTahDoodle需要將用戶的任務信息保存在property list格式(xml格式)的文件中,因此需要使用一個C輔助函數來返回該文件的路徑(NSString對象).
復制代碼
NSString *docPath()
{
NSArray *pathList=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathList objectAtIndex:0] stringByAppendingPathComponent:@"data.td"];
}
復制代碼
<Xcode可以識別#pragma mark指令,並根據該指令為文件中的代碼分組.可以使用此命令來為代碼分塊.>
應用啟動時時無法工作或接受輸入的,啟動完成後,UIApplication實例會向其委托對象發送<application:didFinishLaunchingWithOptions:>消息.凡是需要在程序能夠和用戶交互前就完成的初始化工作,都應該在該方法中實現.
增加和刪除任務的代碼如下
復制代碼
-(void)addTask:(id)sender
{
//獲取新任務的文字描述
NSString *t=[taskField text];
//如果taskField沒有內容,就直接返回
if([t isEqualToString:@""]){
return;
}
//將新任務(字符串)加入tasks數組
[tasks addObject:t];
//刷新視圖表格,顯示新加入的任務
[taskTable reloadData];
//清空taskField
[taskField setText:@""];
//關閉鍵盤
[taskField resignFirstResponder];
}
-(void)deleteTask:(id)sender
{
//indexPathForSelectedRow方法可以返回被選中的行存儲的信息在數組中的位置
int numOfSelectedCell =[taskTable indexPathForSelectedRow].row;
[tasks removeObjectAtIndex:numOfSelectedCell];
[taskTable reloadData];
}
復制代碼
當用戶按下某個UIControl對象,並且該對象可以成為第一相應對象,擁有第一響應對象狀態的UIControl對象可以處理來自鍵盤的文字輸入及搖動事件等,被按下的UIControl對象收到becomeFirstResponder消息,開始處理事件並保持這一狀態,直到另一個響應對象的對象成為第一響應對象昂,或者是自己收到resignFirstResponder消息.表現在程序中就是當用戶點擊TextField的時候會彈出鍵盤,當點擊done的時候,鍵盤會收起來.