【秀丸エディタ】正規表現で改行を含む一行を丸々削除する

秀丸エディタの正規表現で、改行をふくんだ一行をまるまる削除する記述

正解
------------------------------------
^なんらかパターン¥n
------------------------------------

以下のやり方だと改行が残ってしまうのでダメ

×
------------------------------------
^なんらかパターン$
------------------------------------

×
------------------------------------
^なんらかパターン¥n$
------------------------------------

jQuery uiのdialogでタイトルに変数を使って更新させる

jQuery ui の dialog で タイトルを設定する場所は主に二箇所ある。

ひとつは jQuery ファイル内
---------------------------
//jQuery_ui の詳細設定
$('#dialog').dialog({
autoOpen: false,
width: 600,
title: 'ここがタイトルになる',
modal:false,
resizable:false,
buttons: {
"元に戻す": function() {
//$(this).dialog("close");
alert('元に戻す');
},
"閉じる": function() {
$(this).dialog("close");
}
}
});

---------------------------

もうひとつは html(PHP)ファイル内
---------------------------
<div id="dialog" title="ここがタイトルになる">
<p>ここがダイアログの内容</p>
</div>
---------------------------

二箇所どちらにもタイトルを設定すると jQuery ファイルの情報が優先される。

このたび、タイトルに変数を用いて、条件によってタイトルの内容を変更したかったのだが少し苦戦した。上記二箇所をいじってもタイトル文章がうまく更新できなかったのだ。
結論だけ言うと、タイトルはオプションを使っても指定できる。

jQuery ファイル内でダイアログのタイトルを上書き
---------------------------
$('#dialog').dialog('option', 'title', '新しいタイトル');
---------------------------

ここに変数を持ってきて、希望通りに表示できた。

参考サイト

【javascript】テキストエリアの文字列を別のテキストエリアに表示する

javascript で、テキストエリアの文字列を別のテキストエリアに表示したときの覚書

以下のようにテキストエリアが二つある。
----------------------------------------------
<div>
<form id="form1">
<textarea name="msg" cols=40 rows=4 id="textarea1">
この文字を textarea2 に表示したい
</textarea>
</form>
</div>

<div>
<form id="form2">
<textarea name="msg" cols=40 rows=4 id="textarea2">
ここに textarea1 の文字列が表示される
</textarea>
</form>
----------------------------------------------

textarea1 の文字列を textarea2 に表示する、javascript の記述

idを指定してアクセスする記述
----------------------------------------------
document.forms["form2"].textarea2.value = document.forms["form1"].textarea1.value;
----------------------------------------------

こういう記述もある
----------------------------------------------
document.forms.form2.textarea2.value = document.forms.form1.textarea1.value;
----------------------------------------------

formは番号指定でも可能
----------------------------------------------
document.forms[1].textarea2.value = document.forms[0].textarea1.value;
----------------------------------------------

form の name で指定する方法
----------------------------------------------
<div>
<form id="form1" name="form_name1">
<textarea name="msg" cols=40 rows=4 id="textarea1">
この文字を textarea2 に表示したい
</textarea>
</form>
</div>

<div>
<form id="form2" name="form_name2">
<textarea name="msg" cols=40 rows=4 id="textarea2">
ここに textarea1 の文字列が表示される
</textarea>
</form>
----------------------------------------------

form の name で指定する場合、forms の記述は不要
----------------------------------------------
document.form_name2.textarea2.value = document.form_name1.textarea1.value;
----------------------------------------------

参考サイト

【Objective-C】文字列内の改行を削除する

文字列内の改行を削除する方法

改行された
文字列

↓↓↓↓↓

改行された文字列

------------------------------------
//改行区切りで1行ずつ配列に入れる
NSMutableArray *lines = [NSMutableArray array];
[selectedWord enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
[lines addObject:line];
}];

//配列を連結
NSString *renketu_string = [lines componentsJoinedByString:@""];
NSLog(@"タイトルに表示する文字列:%@",renketu_string);
------------------------------------

参考ページ

【Xcode】TableViewでセルを選択したらセグエで画面遷移の設定

1.TableViewControllerから目的のViewへセグエでつなぐ

ストーリーボード上で行う。このとき注意すべきなのは、セグエをテーブルのセルから引っ張らないこと!TableViewController 上部の四角いボタンから目的のViewController へドラッグする。

2.セグエにIDを設定する

ストーリーボード上で新しいセグエを選択して、Attributes Inspector から ID を決める。「to○○ViewController」みたいな名前が分かりやすい。

3.実装ファイル(.m)に画面遷移の記述をする

------------------------------------------------------
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

[self performSegueWithIdentifier:@"セグエのID" sender:self];
}
------------------------------------------------------

参考ページ

【Xcode】TableViewのセルを二回タップしないと反応しない

TableViewのセルを一度タップしても反応しない。二度目以降は反応するという現象が起こった。

原因:

didSelectRowAtIndexPath を使用する場面で didDeselectRowAtIndexPath していた。

didDeselectRowAtIndexPath は、セルが解除されたタイミングで反応するイベント。

【Xcode】新しいViewController用の新しいクラスを作る

Object Library から 新しい View Controller をドラッグ&ドロップしたら、その View Controller に対する命令を記述するために、新しいクラスを作る必要がある。新しいクラスをつくると「新しいView Controller.h」と「新しいView Controller.m」のファイルが作成され、そこに命令文を記述していけばいい。

新しいクラスの作り方の手順。

1.ストーリーボードに View Controller を新規作成

ストーリーボードに View Controller オブジェクトをドラッグ&ドロップしてつくる。

2.新しいクラスを作る

「File」→「New」→「File...」でカスタムクラスを作る

3.新しいクラスと新しいViewControllerを関連付ける

ストーリーボードで新しくつくった View Controller を選択して、Identity Inspector の Cumtom Class から 先ほどつくったカスタムクラスを選択する。

【Xcode】TableViewセルの検索機能を実装する

1.TableView と Search Bar and Search Display を使うための下準備をする

1.プロジェクトからシングルビューをつくり、ストーリーボード上の ViewController に TableView と Search Bar and Search Display を配置する。

2.配置した2つの View(TableView と Search Bar and Search Display)を ViewController.mへそれぞれ接続する。

3.プロトコルを追加。

//ViewController.h(m)
----------------------------------------------
@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, UISearchDisplayDelegate, UISearchBarDelegate>

//searchBar を接続(ストーリーボードからドラッグして行う)。
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;

//TableView を接続(ストーリーボードからドラッグして行う)。
@property (weak, nonatomic) IBOutlet UITableView *tableView;

@end
----------------------------------------------

2.テーブルビューのセルにデータを表示させる

以下の記述をファイルに追加する。

//ViewController.h(m)
----------------------------------------------
@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, UISearchDisplayDelegate, UISearchBarDelegate>

//searchBar を接続
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;

//TableView を接続
@property (weak, nonatomic) IBOutlet UITableView *tableView;

/**
* さきほど記述した場所の下に追記する。テーブルに表示する情報が入ります
*/
@property (nonatomic, strong) NSArray *dataSourceiPhone;
@property (nonatomic, strong) NSArray *dataSourceAndroid;

@end
----------------------------------------------
これを追記したタイミングで「"Assigning to 'id<~>' from incompatible type '~' "」のようなエラーが出る場合は、プロトコロルがきちんと実装できているか確認する。

//これも記述
----------------------------------------------
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

// デリゲートメソッドをこのクラスで実装する
self.tableView.delegate = self;
self.tableView.dataSource = self;

// テーブルに表示したいデータソースをセット
self.dataSourceiPhone = @[@"iPhone 4", @"iPhone 4S", @"iPhone 5", @"iPhone 5c", @"iPhone 5s"];
self.dataSourceAndroid = @[@"Nexus", @"Galaxy", @"Xperia"];

}
----------------------------------------------

//これもまるまる追記
----------------------------------------------
@implementation ViewController

(略)

//ここから下を全部追記

#pragma mark - TableViewDataSource delegate methods

/**
* テーブルに表示するデータ件数を返します(実装必須)
*
* @param tableView テーブルビュー
* @param section 対象セクション番号
*
* @return データ件数
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSInteger dataCount;

switch (section) {
case 0:
dataCount = self.dataSourceiPhone.count;
break;
case 1:
dataCount = self.dataSourceAndroid.count;
break;
default:
break;
}
return dataCount;
}

/**
* テーブルに表示するセクション(区切り)の件数を返します(任意実装)
*
* @param テーブルビュー
*
* @return セクション件数
*/
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}

/**
* テーブルに表示するセルを返します(実装必須)
*
* @param tableView テーブルビュー
* @param indexPath セクション番号・行番号の組み合わせ
*
* @return セル
*/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

// 再利用できるセルがあれば再利用する
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell) {
// 再利用できない場合は新規で作成
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}

switch (indexPath.section) {
case 0:
cell.textLabel.text = self.dataSourceiPhone[indexPath.row];
break;
case 1:
cell.textLabel.text = self.dataSourceAndroid[indexPath.row];
break;
default:
break;
}

return cell;
}

@end
----------------------------------------------

セルにデータが表示てきていることを確認する。

3.検索バーをタップした時のTableViewControllerに検索結果を表示する準備をする

//検索結果を格納するNSArrayをプロパティで宣言する
----------------------------------------------
@interface ViewController ()

@property (nonatomic, strong) NSArray *dataSourceiPhone;
@property (nonatomic, strong) NSArray *dataSourceAndroid;

//ここを追記
//検索結果を格納する配列
@property (nonatomic, strong) NSArray *dataSourceSearchResultsiPhone;
@property (nonatomic, strong) NSArray *dataSourceSearchResultsAndroid;

@end
----------------------------------------------

結果を表示するViewControllerはStoryboardで 「Search Bar and Search Display」を紐づけした時に自動で参照が追加されて Self(UIViewController)にsearchDisplayController として紐づけられている。

//numberOfRowsInSectionを変更
----------------------------------------------
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSInteger dataCount;

// ここのsearchDisplayControllerはStoryboardで紐付けされたsearchBarに自動で紐づけられている
//検索キーワードが入力されているか判定
if (tableView == self.searchDisplayController.searchResultsTableView) {
// 検索中のテーブルビューはこちらで処理
//セクションが複数ある場合はセクションごとに
switch (section) {
case 0:
dataCount = self.dataSourceSearchResultsiPhone.count;
break;
case 1:
dataCount = self.dataSourceSearchResultsAndroid.count;
break;
default:
break;
}
} else {
// 通常時のテーブルビューはこちらで処理
switch (section) {
case 0:
dataCount = self.dataSourceiPhone.count;
//もし、検索前のセルにデータを表示したくない場合はデータの数を0にする
//dataCount = 0;
break;
case 1:
dataCount = self.dataSourceAndroid.count;
break;
default:
break;
}
}
NSLog(@"%ld", (long)dataCount);
return dataCount;
}
----------------------------------------------

//cellForRowAtIndexPathを変更
----------------------------------------------
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
// 再利用できるセルがあれば再利用する
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell) {
// 再利用できない場合は新規で作成
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}

// ここのsearchDisplayControllerはStoryboardで紐付けされたsearchBarに自動で紐づけられている
//検索キーワードが入力されているか判定
if (tableView == self.searchDisplayController.searchResultsTableView) {
// 検索中のテーブルビューはこちらで処理
//セクションが複数ある場合はセクションごとに
switch (indexPath.section) {
case 0:
cell.textLabel.text = self.dataSourceSearchResultsiPhone[indexPath.row];
break;
case 1:
cell.textLabel.text = self.dataSourceSearchResultsAndroid[indexPath.row];
break;
default:
break;
}
} else {
// 通常時のテーブルビューはこちらで処理
switch (indexPath.section) {
case 0: // iOS
cell.textLabel.text = self.dataSourceiPhone[indexPath.row];
break;
case 1: // Android
cell.textLabel.text = self.dataSourceAndroid[indexPath.row];
break;
default:
break;
}
}

return cell;
}
----------------------------------------------

4.データを絞り込む

----------------------------------------------
// 検索バーに入力された文字列を引数に、絞り込みをかけます
- (void)filterContainsWithSearchText:(NSString *)searchText
{
//CONTAINS右辺値が含まれているか,cは大文字小文字の区別なしオプション
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];

self.dataSourceSearchResultsiPhone = [self.dataSourceiPhone filteredArrayUsingPredicate:predicate];
self.dataSourceSearchResultsAndroid = [self.dataSourceAndroid filteredArrayUsingPredicate:predicate];
}
----------------------------------------------

NSPredicate の詳細はこちら

//検索バーの文字を編集する度に呼ばれるデリゲートメソッド
----------------------------------------------
- (BOOL)searchDisplayController:controller shouldReloadTableForSearchString:(NSString *)searchString
{
// 検索バーに入力された文字列を引数に、絞り込みをかけます
[self filterContainsWithSearchText:searchString];

// YESを返すとテーブルビューがリロードされます。
// リロードすることでdataSourceSearchResultsiPhoneとdataSourceSearchResultsAndroidからテーブルビューを表示します
return YES;
}
----------------------------------------------

//セルが選択されたら
----------------------------------------------
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"セルが選択されました");

}
----------------------------------------------
↑これで、1度目のタップでうまく反応しない場合は、didSelectRowAtIndexPath が didDeselectRowAtIndexPath になっていないか確認すること。

参考ページ

【Xcode】ナビゲーションバーのBackボタンのタイトルの変更

ナビゲーションバーのBackボタンのタイトルは、何も設定しないと自動的に前画面のタイトルが付けられる。自分で設定するには次のように記述する。

//画面遷移前のビューで設定する
------------------------------------------------

//ナビゲーションバーの back ボタンの指定
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"ボタンのタイトル" style:UIBarButtonItemStylePlain target:nil action:nil];

//タイトルの設定
[self.navigationItem setBackBarButtonItem:backBarButtonItem];

------------------------------------------------

【Xcode】TableViewでセルを選択してもハイライトにしない方法

Xcode でセルを選択してもハイライトにしない記述

//Objective-C での書き方
--------------------------------------------------
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell3" forIndexPath:indexPath];

//ここ
cell.selectionStyle = UITableViewCellSelectionStyleNone;

}
--------------------------------------------------